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

cyb*_*ion 6 jsf jsf-2

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

Bal*_*usC 4

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

你基本上有两个选择:

  1. 通过faces-config.xml添加metadata-complete="true"到 webapp 自己的faces-config.xml.

    <faces-config ... metadata-complete="true">
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,这还会跳过第 3 方 JAR 的类中的注释扫描。您基本上需要重新定义您想要在 webapp 自己的faces-config.xml.


  2. 提供一个自定义Lifecycle实现,LifecycleFactory您可以通过它在<factory><lifecycle-factory>webapp 的faces-config.xml. 在该实现中,addPhaseListener()相应地覆盖以在跳过或继续之前执行例如instanceof检查。