防止在jsf 2中从包含的jar安装阶段监听器

时间:2013-03-22 14:16:06

标签: jsf jsf-2

我有一个JSF 2应用程序,其中包含一个jar文件,该文件又在其META-INF目录中包含faces-config.xml。 faces-config.xml包含阶段侦听器的声明。我想在不修改jar文件本身的情况下阻止安装此阶段侦听器。 这可能吗?

1 个答案:

答案 0 :(得分:4)

您无法阻止第三方JAR中faces-config.xml的特定部分被解释。

你基本上有两个选择:

  1. 通过将faces-config.xml添加到webapp自己的metadata-complete="true"来阻止第三方JAR中的整个faces-config.xml被解释。

    <faces-config ... metadata-complete="true">
    

    请注意,这也会跳过第三方JAR类中的注释扫描。你基本上需要重新定义你想在webapp自己的faces-config.xml中使用的特定部分。


  2. 通过Lifecycle提供自定义LifecycleFactory实施,您在webapp <factory><lifecycle-factory>的{​​{1}}注册。在该实现中,相应地覆盖addPhaseListener()以执行例如在跳过或继续之前进行faces-config.xml检查。