【问题标题】:Difference between JSP EL, JSF EL and Unified EL [closed]JSP EL、JSF EL 和 Unified EL 之间的区别 [关闭]
【发布时间】:2023-03-28 13:35:02
【问题描述】:

我想知道表达式语言 (EL) 之间的详细区别。 有 JSP EL、JSF EL 和 Unified EL。

我想了解 EL 背后的历史以及 Java EE 应用程序中使用的最新 EL。它是最新版本中所有视图技术的通用 EL 吗?

【问题讨论】:

    标签: jsp jsf jakarta-ee el


    【解决方案1】:
    • 2002 年 6 月:JSTL 1.0 首次与 EL 一起引入。那些 ${} 仅在 JSTL 标签中有效。它旨在调用Javabean get 方法。

    • 2003 年 11 月:引入了 JSP 2.0,并且 EL 在 javax.servlet.jsp.el 包中从 JSTL 1.0 移至 JSP 2.0,它成为了 标准 EL 作为 J2EE 1.4 标准的一部分。 JSTL 1.1 出厂时没有 EL。现在${} 也可以在 JSP 模板文本中的 JSTL 标记之外工作。

    • 2004 年 3 月:JSF 1.0 在 javax.faces.el 包中引入了 deferred EL。那些 #{} 仅在 JSF 标记中起作用。与标准 JSP EL ${} 的区别在于它不仅可以做get,还可以做set。这对于托管 bean 自动创建和设置输入组件的值是强制性的。标准 EL ${} 也适用于 JSF 输出标签,但如果它们不存在于范围内并且它们不会设置输入值,它们将不会自动创建 bean。

    • 2005 年 5 月:虽然仍在为应于 2006 年 5 月发布的新 JSP 2.1 做准备,但延迟的 EL #{} 已从 JSF 中提取,并与 javax.el 包中的标准 EL ${} 结合使用。那时,它变成了 unified EL,它是随 JSF 1.2 引入的,后来成为 JSP 2.1 和 Java EE 5 标准的一部分。 #{} 现在也可以在 JSP 标记中用于get 值,但不能用于set 值。 ${} 现在可以在 JSP 中自动创建托管 bean,但不能自动创建 set 值。

    • 2006 年 11 月:引入 Facelets 作为 JSP 的继承者。它允许在 JSF 标记之外的模板文本中使用 #{},以替代不带任何属性的 <h:outputText>。它还将${} 视为#{},因此它们在Facelets 中的行为相同。

    • 2009 年 12 月:EL 从 JSP 规范中提取出来,成为一个独立的规范,将独立于 JSP 进行维护,第一个版本是 EL 2.2 (JSR-245),类似于 JSP 2.2。主要的新特性是调用参数化方法,而不是仅在 #{} 语法中调用 Javabean getter/setter,例如#{bean.method(argument)}。此外,Facelets 成为 Java EE 6 标准的一部分。

    • 2013 年 6 月:引入了带有独立 EL 处理器的 EL 3.0,允许在普通 Java SE 应用程序中使用。其他主要的新特性是新的字符串连接运算符+=、集合对象的新操作,包括流和 Lambda 表达式->(即使在 Java 6/7 上!)以及将常量导入 EL 范围。

      李>

    【讨论】:

      【解决方案2】:

      添加到 BalusC 的答案...

      EL 最初由 Art Technology Group 的 Nathan Abramson 于 2001 年构思并实施。当时该实施被称为最简单的可能表达语言 (SPEL)。该实现后来被包含在 JSTL1.0 中。 Nathan 是 JSR-052 Expert Group 的成员,并被认为是 JSTL specification 中表达式语言背后的驱动力。

      “特别提到 Nathan Abramson 是表达背后的推动力 JSTL中引入的语言"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-05
        • 1970-01-01
        相关资源
        最近更新 更多