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

Jsf ui:include不能包含具有不同服务器上下文的页面,jsf,include,Jsf,Include,在我的tomcat中,我定义了两个上下文 一个是我的应用程序URL,它是 http://localhost:8080/mysite/faces/abc.xhtml 另一个用于放置我的所有静态文件,这些文件可能被其他应用程序使用 http://localhost:8080/files/myfile.html 例如,在我的application.xhtml文件中,我希望包含来自其他上下文的页面 但我总是犯错误 javax.faces.view.facelets.TagAttributeExcept

在我的tomcat中,我定义了两个上下文

一个是我的应用程序URL,它是

http://localhost:8080/mysite/faces/abc.xhtml

另一个用于放置我的所有静态文件,这些文件可能被其他应用程序使用

http://localhost:8080/files/myfile.html

例如,在我的application.xhtml文件中,我希望包含来自其他上下文的页面

但我总是犯错误

javax.faces.view.facelets.TagAttributeException:……无效路径:/files/myfile.html


看起来ui:include不适合在这里使用,因为它只查找与上下文相关的路径。那么我应该使用什么呢?

有几个选项:

  • 改用

  • 将共享文件重构为一个单独的web片段项目,该项目应在两个web应用程序的
    /web-INF/lib
    中作为JAR结束。将Facelets资源放在单独web片段项目的
    /META-INF/resources
    文件夹中。它将以通常的方式提供给

  • 在JSF1.x上,使用自定义的
    com.sun.facelets.impl.DefaultResourceResolver

  • 在JSF2.x上,使用自定义的
    javax.faces.view.facelets.ResourceResolver

  • 在JSF2.2+上,使用自定义的
    javax.faces.application.ResourceHandler


  • 有几种选择:

  • 改用

  • 将共享文件重构为一个单独的web片段项目,该项目应在两个web应用程序的
    /web-INF/lib
    中作为JAR结束。将Facelets资源放在单独web片段项目的
    /META-INF/resources
    文件夹中。它将以通常的方式提供给

  • 在JSF1.x上,使用自定义的
    com.sun.facelets.impl.DefaultResourceResolver

  • 在JSF2.x上,使用自定义的
    javax.faces.view.facelets.ResourceResolver

  • 在JSF2.2+上,使用自定义的
    javax.faces.application.ResourceHandler


  • 感谢巴卢斯!iframe可以完全满足我的需要。第二个选项对我无效,因为我有其他后端应用程序,它们将动态生成静态html页面,这些页面应该可以从我的web应用程序中看到。@BalusC如果我想在JSF页面中加载外部html资源,该怎么办?这是我的问题,自定义资源解析程序也是解决方案吗@库克杰:真的。谢谢巴卢斯克!iframe可以完全满足我的需要。第二个选项对我无效,因为我有其他后端应用程序,它们将动态生成静态html页面,这些页面应该可以从我的web应用程序中看到。@BalusC如果我想在JSF页面中加载外部html资源,该怎么办?这是我的问题,自定义资源解析程序也是解决方案吗@库克杰:的确。