JSP 电致发光、 JSF 电致发光与统一电致发光的区别

我想知道表达式语言(EL)之间的详细区别。 有 JSPEL、 JSFEL 和统一 EL。

我想知道 EL 背后的历史,以及 JavaEE 应用程序中使用的最新 EL 是什么。在最新版本中,所有视图技术都采用 EL 标准吗?

22609 次浏览
  • 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,并成为了 J2EE 1.4标准的一部分 标准 EL。JSTL 1.1发货时没有 EL。现在,${}也可以在 JSP 模板文本的 JSTL 标记之外工作。

  • 2004年3月: JSF 1.0是在 javax.faces.el包中与 延期 EL一起引入的。它是那些仅在 JSF 标记内部工作的 #{}东西。与标准 JSP EL ${}的不同之处在于,它不仅可以执行 get,而且还可以执行 set。这对于托管 bean 自动创建和设置输入组件的值是强制性的。标准的 EL ${}也可以在 JSF 输出标记中工作,但是如果 bean 还不存在于作用域中,而且它们不会设置输入值,那么它们就不会自动创建 bean。

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

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

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

  • Jun 2013: EL 3.0 was introduced which comes with a standalone EL processor, allowing usage in a plain Java SE application. Other main new features are the new string concatenation operator +=, new operations for collection objects, including streams and Lambda expressions -> (even on Java 6/7!) and importing constants into EL scope.

加上 BalusC 的回答..。

EL 最初是由艺术技术集团的 Nathan Abramson 在2001年构思和实施的。当时该实现被称为最简可能的表达式语言(SPEL)。该实现后来被包含在 JSTL1.0中。内森是 JSR-052专家组的一部分,在 JSTL 规范中被认为是表达语言背后的驱动力。

”特别提到 Nathan Abramson 因为他是这句话背后的推动力 language introduced in JSTL"