java – 如何在多个战争之间共享一个jsf错误页面
发布时间:2020-12-14 05:07:42 所属栏目:Java 来源:网络整理
导读:我正在尝试在多个战争之间共享一个错误页面(error.xhtml).他们都在一个大耳朵应用程序,并且都使用一个通用的jar库,我想在这里. 错误页面应该使用web.xml或更好的web-fragment.xml,并且将被声明为标准的java ee错误页面. 实际EAR结构: EAR EJB1 EJB2 WAR1 (u
我正在尝试在多个战争之间共享一个错误页面(error.xhtml).他们都在一个大耳朵应用程序,并且都使用一个通用的jar库,我想在这里.
错误页面应该使用web.xml或更好的web-fragment.xml,并且将被声明为标准的java ee错误页面. 实际EAR结构: EAR EJB1 EJB2 WAR1 (using CommonWeb.jar) WAR2 (using CommonWeb.jar) WAR3 (using CommonWeb.jar) 只需将错误页面放在META-INF /资源下就不起作用,因为它不是资源. 我想尽可能少的配置在每个战争文件. 我使用的是Glassfish 3.1,但是尽可能地使用Java EE 6标准. 解决方法
您需要创建一个自定义的
ResourceResolver ,它可以从classpath解析资源,将其放在通用的JAR文件中,然后在JAR的web-fragment.xml(或WARs的web.xml)中声明它.
启动例子: package com.example; import java.net.URL; import javax.faces.view.facelets.ResourceResolver; public class FaceletsResourceResolver extends ResourceResolver { private ResourceResolver parent; private String basePath; public FaceletsResourceResolver(ResourceResolver parent) { this.parent = parent; this.basePath = "/META-INF/resources"; // TODO: Make configureable? } @Override public URL resolveUrl(String path) { URL url = parent.resolveUrl(path); // Resolves from WAR. if (url == null) { url = getClass().getResource(basePath + path); // Resolves from JAR. } return url; } } 在web-fragment.xml或web.xml中 <context-param> <param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name> <param-value>com.example.FaceletsResourceResolver</param-value> </context-param> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |