重新排序自定义统一表达式语言解析器
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
.
我正在尝试编写自定义表达式语言 (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
.