ui:include不能包含具有不同服务器上下文的页面

时间:2012-08-15 06:50:48

标签: jsf include

在我的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不适合在这里使用,因为它只查找与上下文相关的路径。那我该怎么用?

1 个答案:

答案 0 :(得分:4)

有几种选择:

  1. 请改用<iframe>

  2. 将共享文件重构为一个单独的Web片段项目,该项目最终应该在两个webapps的/WEB-INF/lib中作为JAR。将Facelets资源放在单独的Web片段项目的/META-INF/resources文件夹中。它将以<ui:include>通常的方式提供:Structure for multiple JSF projects with shared code

  3. 在使用JSF 1.x时,请使用自定义com.sun.facelets.impl.DefaultResourceResolverHow to use Facelets composition with files from another context

  4. 在使用JSF 2.x时,请使用自定义javax.faces.view.facelets.ResourceResolverhow to share a jsf error page between multiple wars

  5. 在使用JSF 2.2+时,请使用自定义javax.faces.application.ResourceHandlerObtaining Facelets templates/files from an external filesystem or database