JSP EL,JSF EL和统一EL之间的区别
我想知道expression式语言(EL)之间的详细区别。 有JSP EL,JSF EL和Unified EL。
我想知道EL背后的历史,以及Java EE应用程序中使用的最新的EL。 所有视图技术在最新版本中都是EL通用的吗?
-
2002年6月:JSTL 1.0首次与EL一起推出。 这是那些只在JSTL标签中工作的
${}
东西。 它旨在调用Javabeanget
方法。 -
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标签之外工作。 -
Mar 2004:在
javax.faces.el
包中引入了延迟EL的 JSF 1.0。 只有那些在JSF标签内部工作的东西。 与标准JSP EL${}
在于,它不仅可以get
,还可以进行set
。 这对于托pipebean自动创build和设置input组件的值是必需的。 标准EL${}
可以在JSF输出标签中使用,但是如果它们不在范围内,它们将不会自动创buildbean,并且它们不会设置input值。 -
2005年5月:在准备将于2006年5月发布的新的JSP 2.1的同时,延迟EL
#{}
从JSF中提取,并与javax.el
包中的标准EL${}
结合使用。 在这一点上,它成为了JSF 1.2引入的统一EL ,成为了JSP 2.1和Java EE 5标准的后续部分。 现在,也可以在JSP标签中使用#{}
来get
值,但不能set
值。${}
现在可以在JSP中自动创build托pipe的bean,但不能set
值。 -
2006年11月:Facelets被引入作为JSP的继任者。 它允许在JSF标签之外的模板文本中使用
#{}
,作为<h:outputText>
替代,而不带任何属性。 它也将${}
视为#{}
,所以它们在Facelets中performance相同。 -
2009年12月:EL从JSP规范中提取,成为独立的规范,独立于JSP,第一个版本是EL 2.2(JSR-245),类似于JSP 2.2。 主要的新function是调用参数化方法,而不是只在
#{}
语法中调用Javabean getter / setter,例如#{bean.method(argument)}
。 此外,Facelets成为Java EE 6标准的一部分。 -
2013年6月:EL 3.0引入了独立的EL处理器,允许在普通的Java SE应用程序中使用。 其他主要的新function是新的string连接操作符
+=
,集合对象的新操作,包括stream和Lambdaexpression式->
(甚至在Java 6/7!上)以及将常量导入EL范围。
添加到BalusC的答案…
EL最初由Art Technology Group的Nathan Abramson在2001年构思并实施,当时被称为最简单可能的expression语言(SPEL)。 这个实现后来被包含在JSTL1.0中。 Nathan是JSR-052专家组的一员 ,在JSTL规范中被认为是expression式语言背后的推动力。
“特别提到内森·艾布拉姆森(Nathan Abramson)是在JSTL中引入expression式语言背后的驱动力”
- 在EL中调用带有参数/variables/参数的直接方法或方法
- 在JavaScript文件中混合使用JSF EL
- 方法必须有签名“String method()… …”,但签名“void method()”
- 如何testingJSF中的枚举相等性?
- 在JSP EL中,这个expression式语言$ {pageContext.request.contextPath}究竟做了什么?
- 没有bean属性的JSF组件绑定
- EL表达式在JSP中不被评估
- 我应该select==还是eq来比较EL中的string?
- 如何将parameter passing给jsp:include通过c:set? JSP中variables的作用域是什么?