Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Primefaces Prettyfaces编程配置 问题 有没有办法不用pretty-config.xml文件以编程方式配置漂亮的面孔 如果必须使用pretty-config.xml,那么;有没有办法以编程方式重写/扩充其URLMapping 问题背景:_Primefaces_Tomcat7_Jsf 2.2_Prettyfaces - Fatal编程技术网

Primefaces Prettyfaces编程配置 问题 有没有办法不用pretty-config.xml文件以编程方式配置漂亮的面孔 如果必须使用pretty-config.xml,那么;有没有办法以编程方式重写/扩充其URLMapping 问题背景:

Primefaces Prettyfaces编程配置 问题 有没有办法不用pretty-config.xml文件以编程方式配置漂亮的面孔 如果必须使用pretty-config.xml,那么;有没有办法以编程方式重写/扩充其URLMapping 问题背景:,primefaces,tomcat7,jsf-2.2,prettyfaces,Primefaces,Tomcat7,Jsf 2.2,Prettyfaces,在我的情况下,映射必须来自另一个xml资源,并且有一些额外的逻辑。所以我设计了以下解决方案 我实现了一个ServletContextAttributeListener,在这里我监视prettyConfig对象何时被PrettyFilter添加到servlet上下文 @Override public void attributeAdded(ServletContextAttributeEvent event) { Object value = event.getValue(); i

在我的情况下,映射必须来自另一个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
类是构建自定义映射配置的实现。我检查了更新的配置,似乎所有映射都添加正确。但是,如果我采用这种方法,映射不会产生任何效果。当然,如果我将映射放在pretty-config.xml中,它就可以完美地工作

我使用的是PrettyFaces 3.3.3、JSF2.2、prime faces 4.0、tomcat 7。有一个名为SPI的程序,允许您实现一个定制的解决方案来提供PrettyFaces配置。PrettyFaces在内部使用此SPI为配置提供不同的机制,如or。但是您也可以自己使用SPI来实现构建配置的自定义方法


只需创建一个
ConfigurationProvider
的实现,然后将名为
META-INF/services/com.ocpsoft.pretty.faces.spi.ConfigurationProvider
的文件添加到类路径中,并在其中添加实现类的完整类名(有关此插件机制的描述,请参阅的文件和javadocs).

事实上,我首先尝试了SPI技术;但没能成功。我上面代码中的类PrettyFacesConfigProvider实际上就是与SPI兼容的实现。在你的评论之后,我又试了一次,效果很好。它不起作用的原因是我把spi配置文件放错了地方。我在资源目录中创建了一个META-INF/services,将文件放在那里,然后宾果!