重新排序自定义统一表达式语言解析器

Reorder custom Unified Expression Language Resolvers

我正在尝试编写自定义表达式语言 (EL) 解析器。这个解析器的作用是拦截对某个Bean的方法调用来添加第二个参数。我编写了一个自定义 EL 解析器,它覆盖了 invoke 方法来执行我想要的操作。我还根据需要将解析器放在 faces-config.xml 中。

不幸的是,我的项目中有一个依赖项也声明了自定义 EL 解析器,它们被放置在解析器链中我的 EL 解析器之前。由于其他解析器之一已经处理了 invoke 方法,因此我的自定义 invoke 方法永远不会被调用。

有什么方法可以重新排序解析器,以便首先调用我的解析器?我知道 Apache MyFaces 提供了一种对解析器进行排序的机制,但遗憾的是我无法在我的项目中使用 MyFaces。

将 EL 解析器放在一个单独的 web fragment project 中,最终在 webapp 的 /WEB-INF/lib 中作为 JAR 结束。在网络片段项目的 faces-config.xml 中,声明顺序为 "before others",如下所示。

<ordering>
    <before>
        <others />
    </before>
</ordering>

或者如果 "other dependency" 也有一个 faces-config.xml 文件声明了 <name>,则在顺序中显式声明该名称。如果 "other dependency" 恰好也具有上述顺序集,这将是唯一的方法。

<ordering>
    <before>
        <name>nameOfThatOtherDependency</name>
    </before>
</ordering>

注意应该是影响整个faces-config.xml.