在我的tomcat中,我定义了两个上下文。
一个是我的应用程序URL,即
http://localhost:8080/mysite/faces/abc.xhtml
另一个用于放置我可能被其他应用程序使用的所有静态文件。
http://localhost:8080/files/myfile.html
在我的应用程序.xhtml文件中,我想要包含来自其他上下文的页面,例如
<ui:include src="/files/myfile.html">
但我总是得到错误
javax.faces.view.facelets.TagAttributeException:.....Invalid path : /files/myfile.html
看起来像ui:include不适合在这里使用,因为它只查找与上下文相关的路径。那我该怎么用?
答案 0 :(得分:4)
有几种选择:
请改用<iframe>
。
将共享文件重构为一个单独的Web片段项目,该项目最终应该在两个webapps的/WEB-INF/lib
中作为JAR。将Facelets资源放在单独的Web片段项目的/META-INF/resources
文件夹中。它将以<ui:include>
通常的方式提供:Structure for multiple JSF projects with shared code。
在使用JSF 1.x时,请使用自定义com.sun.facelets.impl.DefaultResourceResolver
:How to use Facelets composition with files from another context。
在使用JSF 2.x时,请使用自定义javax.faces.view.facelets.ResourceResolver
:how to share a jsf error page between multiple wars。
在使用JSF 2.2+时,请使用自定义javax.faces.application.ResourceHandler
:Obtaining Facelets templates/files from an external filesystem or database。