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

Kri*_*hna 122 jsf jsp el java-ee

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

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

Bal*_*usC 218

  • 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年三月: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中自动创建托管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范围.


jse*_*ars 18

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

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

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