JSF Gossip: JSF Expression Language
2010-12-21 11:00
211 查看
From
Gossip@caterpillar
JSF Gossip: 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=Big5"%>
<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 |
result2)是个三元运算,expression为true显示result1,false显示result2。
逻辑运算有:and(或&&)、or(或!!)、not(或!)。一些例子为:
运算式 | 结果 |
#{true and false} | false |
#{true or false} | true |
#{not true} | false |
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 |
相关文章推荐
- JSF Gossip: Backing Beans
- JSF Gossip: Beans 的组态与设定
- JSF Gossip: 动作事件
- JSF Gossip: Beans 上的 List、Map
- JSF Gossip: 标准转换器
- JSF Gossip: 自订转换器 - 总结版
- JSF Gossip: 错误讯息处理
- JSF Gossip: 导航规则设置
- JSF Gossip: 国际化讯息
- jsf(Java Server Faces)
- jsf问题小结
- JSF伴随着Java EE 5从幕后走上前台
- JSF 2.0 新特性
- Jsf 后台管理Bean获得页面值的几种方式(一)
- JSF下dataGrid与Action绑定问题
- Jsf之标准验证器
- JSF---->事件处理---动作事件
- JSF---->JSF Expression Language
- jsf中获取属性值的普通获取和jquery获取区别
- JSF&JBoss5.1第一个例子