【问题标题】:How to ignore imported external javascript in JSF如何在 JSF 中忽略导入的外部 javascript
【发布时间】:2012-10-05 16:51:35
【问题描述】:

我有一个使用<script src="<external url>" type="text/javascript" ></script> 加载外部javascript 的xhtml 页面

有没有办法让 JSF 不关心脚本的输出?我想知道这一点,因为 JSF SAXCompiler 会因此而引发异常:

javax.faces.view.facelets.FaceletException: Error Parsing /pages/index.xhtml: Error Traced[line: 53] The reference to entity "c" must end with the ';' delimiter.
at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:421)
at com.sun.faces.facelets.compiler.SAXCompiler.doMetadataCompile(SAXCompiler.java:404)
at com.sun.faces.facelets.compiler.Compiler.metadataCompile(Compiler.java:130)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.createMetadataFacelet(DefaultFaceletFactory.java:326)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.access$200(DefaultFaceletFactory.java:92)
at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:165)
at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:163)
at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:94)
at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:89)
at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getViewMetadataFacelet(DefaultFaceletCache.java:143)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getViewMetadataFacelet(DefaultFaceletCache.java:62)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:259)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:208)
at com.sun.faces.application.view.ViewMetadataImpl.createMetadataView(ViewMetadataImpl.java:113)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:233)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)

【问题讨论】:

  • 只是问,如果你也删除脚本标签会发生异常吗?也许问题不在于脚本本身,而在于它引用的 url。能不能也贴一下真正的脚本导入行?
  • 它已经在我对 Balus C 回复的评论中,但这里是导入行:第 53 行是我的 javascript 导入:<script src="http://view.light-speed.com/mumble.php?url=https%3A//api.mumble.com/mumble/‌​cvp.php%3Ftoken%3DLSG-6D-ECBDEB&c=000000&r=0&h=450&w=160&css=https%3A//view.light‌​-speed.com/styles/mumble-minimal.css"
  • 我明白了,我问的时候还是没有回复。

标签: java javascript jsf-2 facelets


【解决方案1】:

你误解了这个问题。您似乎认为 JSF 将脚本包含在网络服务器中。这不是真的。该脚本在解析检索到的 JSF 生成的 HTML 代码期间由 Web 浏览器单独下载。

如果您需要更详细的帮助来解决真正的问题,那么您需要显示/pages/index.xhtml 的第 53 行。该异常至少表明您在某处使用&c 而没有转义与号。例如

<p>Bla bla &c bla bla</p>

Facelets 是一种基于 XML 的视图技术,您需要 escape XML 特殊字符 &amp;amp;&lt;&gt;"

<p>Bla bla &amp;c bla bla</p>

另见:

【讨论】:

  • 第 53 行是我的 javascript 导入:&lt;script src="http://view.light-speed.com/mumble.php?url=https%3A//api.mumble.com/mumble/cvp.php%3Ftoken%3DLSG-6D-ECBDEB&amp;c=000000&amp;r=0&amp;h=450&amp;w=160&amp;css=https%3A//view.light-speed.com/styles/mumble-minimal.css" type="text/javascript" &gt;&lt;/script&gt;
  • 如已回答,只需将 XML 中所有出现的 &amp;amp; 替换为 &amp;amp; 即可。
  • 我不明白我怎么会错过 URL 中的那个 & ......让我尝试 HTML 实体,看看会发生什么......
  • 好吧,很抱歉浪费了你所有的时间,因为这个实际上非常明显!一定是在很多场合都为时已晚。
猜你喜欢
  • 2017-01-14
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
相关资源
最近更新 更多