You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <ta...@jakarta.apache.org> on 2007/02/24 02:49:05 UTC

[jira] Commented: (TAPESTRY-1263) Can't use HTML entities in templates

    [ https://issues.apache.org/jira/browse/TAPESTRY-1263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12475571 ] 

Howard M. Lewis Ship commented on TAPESTRY-1263:
------------------------------------------------

The underlying cause of this problem is the use of an XML document to parse templates as well formed documents.

HTML is not well formed XML, its a kind of SGML (on a good day).

Perhaps we could use something like HTML tidy to "clean up" the HTML before passing it into the XML?  This could be applied to templates based on meta-data.

Worst case is we have to write our own XML-ish parser.  But that sends us back to T4 style templates a bit, with all their problems.

> Can't use HTML entities in templates
> ------------------------------------
>
>                 Key: TAPESTRY-1263
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1263
>             Project: Tapestry
>          Issue Type: Bug
>    Affects Versions: 5.0
>            Reporter: Daniel Gredler
>             Fix For: 5.0
>
>
> Using HTML entities in T5 templates (like &nbsp;) causes an exception:
> Failure parsing template classpath:com/of/components/Border.html: The entity "nbsp" was referenced, but not declared.
>         * org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1183)
>         * org.apache.tapestry.internal.services.TemplateParserImpl.parseTemplate(TemplateParserImpl.java:161)
>         * $TemplateParser_110b25178d4.parseTemplate($TemplateParser_110b25178d4.java)
>         * $TemplateParser_110b25178d5.parseTemplate($TemplateParser_110b25178d5.java)
>         * $TemplateParser_110b25178ca.parseTemplate($TemplateParser_110b25178ca.java)
>         * org.apache.tapestry.internal.services.ComponentTemplateSourceImpl.parseTemplate(ComponentTemplateSourceImpl.java:145)
>         * org.apache.tapestry.internal.services.ComponentTemplateSourceImpl.getTemplate(ComponentTemplateSourceImpl.java:126)
>         * $ComponentTemplateSource_110b25178cc.getTemplate($ComponentTemplateSource_110b25178cc.java)
>         * $ComponentTemplateSource_110b2517897.getTemplate($ComponentTemplateSource_110b2517897.java)
>         * org.apache.tapestry.internal.services.PageLoaderProcessor.loadTemplateForComponent(PageLoaderProcessor.java:350)
>         * org.apache.tapestry.internal.services.PageLoaderProcessor.workComponentQueue(PageLoaderProcessor.java:628)
>         * org.apache.tapestry.internal.services.PageLoaderProcessor.loadPage(PageLoaderProcessor.java:316)
>         * org.apache.tapestry.internal.services.PageLoaderImpl.loadPage(PageLoaderImpl.java:62)
>         * $PageLoader_110b25178c8.loadPage($PageLoader_110b25178c8.java)
>         * $PageLoader_110b25178c6.loadPage($PageLoader_110b25178c6.java)
>         * org.apache.tapestry.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:63)
>         * $PagePool_110b25178cd.checkout($PagePool_110b25178cd.java)
>         * $PagePool_110b25178c5.checkout($PagePool_110b25178c5.java)
>         * org.apache.tapestry.internal.services.RequestPageCacheImpl.getByClassName(RequestPageCacheImpl.java:58)
>         * org.apache.tapestry.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:49)
>         * $RequestPageCache_110b25178c3.get($RequestPageCache_110b25178c3.java)
>         * $RequestPageCache_110b25178c4.get($RequestPageCache_110b25178c4.java)
>         * $RequestPageCache_110b2517891.get($RequestPageCache_110b2517891.java)
>         * org.apache.tapestry.internal.services.PageLinkHandlerImpl.handle(PageLinkHandlerImpl.java:46)
>         * org.apache.tapestry.internal.services.PageLinkHandlerImpl.handle(PageLinkHandlerImpl.java:39)
>         * $PageLinkHandler_110b25178c2.handle($PageLinkHandler_110b25178c2.java)
>         * $PageLinkHandler_110b25178be.handle($PageLinkHandler_110b25178be.java)
>         * org.apache.tapestry.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:88)
>         * $Dispatcher_110b25178c0.dispatch($Dispatcher_110b25178c0.java)
>         * $Dispatcher_110b25178c1.dispatch($Dispatcher_110b25178c1.java)
>         * $Dispatcher_110b25178ad.dispatch($Dispatcher_110b25178ad.java)
>         * org.apache.tapestry.services.TapestryModule$5.service(TapestryModule.java:418)
>         * org.apache.tapestry.services.TapestryModule$6.service(TapestryModule.java:451)
>         * $RequestHandler_110b25178ae.service($RequestHandler_110b25178ae.java)
>         * org.apache.tapestry.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:49)
>         * $RequestHandler_110b25178ae.service($RequestHandler_110b25178ae.java)
>         * com.of.services.AppModule$1.service(AppModule.java:39)
>         * $RequestFilter_110b25178aa.service($RequestFilter_110b25178aa.java)
>         * $RequestHandler_110b25178ae.service($RequestHandler_110b25178ae.java)
>         * org.apache.tapestry.internal.services.LocalizationFilter.service(LocalizationFilter.java:43)
>         * $RequestHandler_110b25178ae.service($RequestHandler_110b25178ae.java)
>         * org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:91)
>         * org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:82)
>         * org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
>         * org.apache.tapestry.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:104)
>         * $RequestHandler_110b25178ae.service($RequestHandler_110b25178ae.java)
>         * $RequestHandler_110b25178af.service($RequestHandler_110b25178af.java)
>         * $RequestHandler_110b25178a5.service($RequestHandler_110b25178a5.java)
>         * org.apache.tapestry.services.TapestryModule$3.service(TapestryModule.java:341)
>         * $HttpServletRequestHandler_110b25178a6.service($HttpServletRequestHandler_110b25178a6.java)
>         * $HttpServletRequestHandler_110b25178a4.service($HttpServletRequestHandler_110b25178a4.java)
>         * org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:114)
>         * org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>         * org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
>         * org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
>         * org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:615)
>         * org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
>         * org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
>         * org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
>         * org.mortbay.jetty.Server.handle(Server.java:269)
>         * org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
>         * org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:678)
>         * org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
>         * org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
>         * org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
>         * org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
>         * org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org