JSP EL,JSF EL和Unified EL之间的区别

时间:2011-01-27 04:29:17

标签: jsp jsf java-ee el

我想知道Expression Languages(EL)之间的细节差异。 有JSP EL,JSF EL和Unified EL。

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

2 个答案:

答案 0 :(得分:214)

  • 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,并且它们不会设置输入值。

  • 2005年5月:在准备应于2006年5月发布的新JSP 2.1时,延迟EL #{}从JSF中提取并与javax.el中的标准EL ${}结合使用包。此时,它变成了统一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 getters / setter,例如#{bean.method(argument)}。此外,Facelets成为Java EE 6标准的一部分。

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

答案 1 :(得分:16)

添加到BalusC的答案......

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

  

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