我们正在尝试使用主应用程序从WebLogic中部署的共享库中访问公共Facelets文件。
公共Facelets文件位于共享库的以下路径中:
META-INF->resources->common-ac->HelloWorld.xhtml
我们在主应用程序页面中访问它:
<ui:include src="/common-ac/HelloWorld.xhtml" />
然而,这不起作用,它抛出以下异常:
javax.faces.view.facelets.TagAttributeException: /....public/Home.xhtml @47,50 <ui:include src="/common-ac/HelloWorld.xhtml"> Invalid path : /common-ac/HelloWorld.xhtml
at com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:125)
这是如何引起的?如何解决?
答案 0 :(得分:0)
自Servlet 3.0起,仅支持使用JAR的/META-INF/resources
作为共享的webapp资源。因此,只要您将Web应用程序部署到Servlet 3.0兼容容器(例如WebLogic 12)并且web.xml
被声明为符合Servlet 3.0规范,那么它应该可以解决这个问题。
如果您将webapp部署到非Servlet 3.0容器(例如WebLogic 11或更早版本),或者某种方式无法声明您的web.xml
符合Servlet 3.0规范,或者目标容器暴露了错误至于从JAR解析资源(例如早期JBoss 6版本),那么您需要创建一个自定义Facelets资源解析器,详见答案:How to create a modular JSF 2.0 application?