Answers:
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引入了带有延迟EL的javax.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范围。
添加到BalusC的答案中...
EL最初是由Art Technology Group的Nathan Abramson于2001年构思并实现的。当时,该实现被称为最简单可能的表达语言(SPEL)。该实现后来包含在JSTL1.0中。Nathan是JSR-052专家组的成员,在JSTL规范中被认为是表达语言背后的推动力。
“特别提到Nathan Abramson,他是JSTL中引入的表达语言的推动力”