JSP EL,JSF EL和统一EL之间的区别[关闭]


122

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

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

Answers:


221
  • 2002年6月:EL首次引入JSTL 1.0。那些${}东西仅在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引入了带有延迟ELjavax.faces.el包装。那些#{}东西仅在JSF标签内起作用。与标准JSP EL的区别${}在于它不仅可以做get,而且可以做set。这对于托管Bean自动创建和设置输入组件的值是必需的。标准EL也${}可以在JSF输出标签中使用,但是如果它们在作用域中不存在,它们也不会自动创建bean,并且它们不会设置输入值。

  • 2005年5月:在新的JSP 2.1应2006年5月发布的还在准备,递延EL #{}从JSF提取和使用标准EL相结合${}javax.el包。那时,它成为JSF 1.2引入的统一EL,后来成为JSP 2.1和Java EE 5标准的一部分。#{}现在,也可以在JSP标记中将该get值用于值,但不能用于set值。${}现在,JSP中的can也可以自动创建托管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 3.0,它带有独立的EL处理器,允许在普通Java SE应用程序中使用。其他主要的新功能是新的字符串连接运算符+=,集合对象的新操作,包括流和Lambda表达式->(甚至在Java 6/7上!),以及将常量导入EL范围。


18

添加到BalusC的答案中...

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

“特别提到Nathan Abramson,他是JSTL中引入的表达语言的推动力”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.