JSF Expression Language
JSF Expression Language 搭配 JSF 标签来使用,是用来存取数据对象的一个简易语言。
JSF EL是以#开始,将变量或运算式放置在 { 与 } 之间,例如:
#{someBeanName}
变量名称可以是faces-config.xml中定义的名称,如果是Bean的话,可以通过使用 '.' 运算符来存取它的属性,例如:
...
<f:view>
<h:outputText value="#{userBean.name}"/>
</f:view>
...
在JSF标签的属性上," 与 " (或'与')之间如果含有EL,则会加以运算,您也可以这么使用它:
...
<f:view>
名称, 年龄:<h:outputText
value="#{userBean.name}, #{userBean.age}"/>
</f:view>
...
一个执行的结果可能是这样显示的:
名称, 年龄:Justin, 29
EL的变量名也可以程序执行过程中所声明的名称,或是JSF EL预定义的隐含对象,例如下面的程序使用param隐含对象来取得使用者输入的参数:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title></title>
</head>
<body>
<f:view>
<b> 您好, <h:outputText value="#{param.name}"/> </b>
</f:view>
</body>
</html>
param是JSF EL预定义的隐含对象变量,它代表request所有参数的集合,实际是一个java.util.Map类型对象,JSF所提供的隐含对象,大致上对应于JSP隐含对象,不过JSF隐含对象移除了pageScope与pageContext,而增加了facesContext与view,它们分别对应于 javax.faces.context.FacesContext与javax.faces.component.UIViewRoot。
对于Map类型对象,我们可以使用 '.' 运算符指定key值来取出对应的value,也可以使用 [ 与 ] 来指定,例如:
...
<f:view>
<b> 您好, <h:outputText value="#{param['name']}"/> </b>
</f:view>
...
在 [ 与 ] 之间,也可以放置其它的变量值,例如:
...
<f:view>
<h:outputText value="#{someBean.someMap[user.name]}"/>
</f:view>
...
如果变量是List类型或阵列的话,则可以在 [] 中指定索引,例如:
....
<f:view>
<h:outputText value="#{someBean.someList[0]}"/>
<h:outputText value="#{someBean.someArray[1]}"/>
<h:outputText
value="#{someBean.someListOrArray[user.age]}"/>
</f:view>
....
您也可以指定字面常数,对于true、false、字符串、数字,JSF EL会尝试进行转换,例如:
....
<h:outputText value="#{true}"/>
....
<h:outputText value="#{'This is a test'}"/>
....
如果要输出字符串,必须以单引号 ' 或双引号 " 括住,如此才不会被认为是变量名称。
在声明变量名称时,要留意不可与JSF的保留字或关键字同名,例如不可取以下这些名称:
true false null div mod and or not eq ne lt gt le ge instanceof empty
使用EL,您可以直接实行一些算术运算、逻辑运算与关系运算,其使用就如同在一般常见的程序语言中之运算。
算术运算符有:加法 (+), 减法 (-), 乘法 (*), 除法 (/ or div) 与余除 (% or mod) 。下面是算术运算的一些例子:
运算式
结果
#{1}
1
#{1 + 2}
3
#{1.2 + 2.3}
3.5
#{1.2E4 + 1.4}
12001.4
#{-4 - 2}
-6
#{21 * 2}
42
#{3/4}
0.75
#{3 div 4}
0.75,除法
#{3/0}
Infinity
#{10%4}
2
#{10 mod 4}
2,也是余除
#{(1==2) ? 3 : 4}
4
如同在Java语法一样 ( expression ? result1 : result2)是个三元运算,expression为true显示result1,false显示result2。
逻辑运算有:and(或&&)、or(或!!)、not(或!)。一些例子为:
运算式
结果
#{true and false}
false
#{true or false}
true
#{not true}
false
关系运算有:小于Less-than (< or lt)、大于Greater-than (> or gt)、小于或等于Less-than-or-equal (<= or le)、大于或等于Greater-than-or-equal (>= or ge)、等于Equal (== or eq)、不等于Not Equal (!= or ne),由英文名称可以得到lt、gt等运算符之缩写词,以下是Tomcat的一些例子:
运算式
结果
#{1 < 2}
true
#{1 lt 2}
true
#{1 > (4/2)}
false
#{1 > (4/2)}
false
#{4.0 >= 3}
true
#{4.0 ge 3}
true
#{4 <= 3}
false
#{4 le 3}
false
#{100.0 == 100}
true
#{100.0 eq 100}
true
#{(10*10) != 100}
false
#{(10*10) ne 100}
false
左边是运算符的使用方式,右边的是运算结果,关系运算也可以用来比较字符或字符串,按字典顺序来决定比较结果,例如:
运算式
结果
#{'a' < 'b'}
true
#{'hip' > 'hit'}
false
#{'4' > 3}
true
EL运算符的执行优先顺序与Java运算符对应,如果有疑虑的话,也可以使用括号()来自行决定先后顺序。
分享到:
相关推荐
jsf 分页 jsf 分页 jsf 分页 jsf 分页
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
资源名称:精通JSF—基于EJBHibernateSpring开发实践视频教程资源目录:【】chapter13_code【】Jsf第七章【】JSF第二章【】Jsf第五章【】Jsf...JSF第四章【 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
JSF中文教程JSF中文教程JSF中文教程JSF中文教程
《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF...
JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍
jsf1.2 core jsf jsf核心
主要讲述JSF的工作方式 JSF的工作方式 JSF架构 JSF模型 JSF事件类型
JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...
jsf 视频 java faces jsf 视频 java faces jsf 视频 java faces
第一个JSF程序,初学JSF者必备,jsf架包 jsf实例
JSF入门教程 JSF入门教程 JSF入门教程
jsf 文档 jsf 文档 jsf 文档 jsf 文档
jsf 中文文档jsf 中文文档jsf 中文文档jsf 中文文档
精通JSF中文教程精通JSF中文教程精通JSF中文教程精通JSF中文教程精通JSF中文教程精通JSF中文教程
这里是jsf的tags的书籍。主要讲述jsf的用法。
JSF入门详细资料(PDF),包括JSF入门中文版,JSF Web应用实战开发,以及JSF2,JSF入门必配学习资料
================================= JSF开发必备JAR ================================= <br>《JSF入门简单中文版》开篇提到JSF开发需要的jar,' 但是按其中提供的方法: <br>jstl.jar 与 ...
JSF的学习入门知识教程,里面有例子还有各个标签的使用及属性介绍
下了才知道他的好.jsf就是好呀,jsf就是好呀!!