EL解析器背后的概念

Concept behind EL resolver

EL 解析器帮助查找属性,但同样的目标可以通过像 #{myObject.variable}

这样的纯 EL 来实现

有人可以向我解释一下创建自己的解析器背后的想法吗?通常是 JSF 中的解析器?我环顾了整个网络,发现了大量关于如何创建自己的教程的教程,但我不明白。

'Pure' EL 不是没有解析器就可以存在的东西。你觉得EL如何'knows'从哪里得到

#{myObject.variable}

解析器完成所有 hard/real 工作,将 EL 解析为对象。可以(并且通常会)存在多个解析器。 EL 表达式将按照解析器配置的顺序传递给解析器,以查看哪个解析器实际上可以……嗯……将 EL 解析为对象。第一个说 'I know go to resolve this' 的解析器被允许。

EL 带有一些内置的解析器,框架可以 add/supply 自己的(JSF、CDI),因此您需要创建自己的解析器的可能性很小。

这样 EL 就可以从 JSF 或 CDI bean(混合)、资源包、任何范围内的事物(请求、会话等)中获取值

最著名的 'additional/external' 解析器之一来自 Spring。为了能够在 JSF 中使用 Objects/beans configured/defined in Spring ,你需要在 faces-config.xml 中配置它们的解析器,然后才会使用它。

另请参阅:

  • How JSF el expression works and when a JSF variable resolver will be involved while evaluating any JSF exprestion?