问题
问题背景:
在我的情况下,映射必须来自另一个xml资源,并且有一些关于它的附加逻辑。因此,我设计了以下解决方案--我实现了一个ServletContextAttributeListener,在这里我监视prettyConfig对象何时被PrettyFilter添加到servlet上下文中
@Override
public void attributeAdded(ServletContextAttributeEvent event) {
Object value = event.getValue();
if(value != null && value instanceof PrettyConfig){
PrettyConfig prettyConfig = (PrettyConfig)value ;
try {
PrettyFacesConfigProvider provider = new PrettyFacesConfigProvider() ;
PrettyConfig config = provider.loadConfiguration(event.getServletContext());
prettyConfig.setMappings(config.getMappings());
} catch (Exception ex) {
Logger.getLogger(CRSWebListener.class.getName()).log(Level.SEVERE, null, ex);
}
}
}PrettyFacesConfigProvider类是构建自定义映射配置的实现。我检查了更新的配置,似乎所有的映射都被正确地添加了。但是如果我走这条路的话,映射就没有任何效果。当然,如果我将映射放在漂亮的config.xml中,它就会完美地工作。
我用的是漂亮脸3.3.3,jsf 2.2,素数面4.0,tomcat 7
发布于 2013-10-20 09:15:21
有一个名为ConfigurationProvider的SPI,它允许您实现用于提供PrettyFaces配置的自定义解决方案。PrettyFaces在内部使用这个SPI来提供不同的配置机制,比如XML或注解。但是,您也可以自己使用SPI来实现构建配置的自定义方法。
只需创建ConfigurationProvider的实现,然后将名为META-INF/services/com.ocpsoft.pretty.faces.spi.ConfigurationProvider的文件添加到类路径中,并在其中添加实现类的完整类名(有关此插件机制的描述,请参见这个例子获取此类文件,并添加ServiceLoader的javadocs )。
https://stackoverflow.com/questions/19468292
复制相似问题