`
zhouxing
  • 浏览: 207283 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSF Expression Language

    博客分类:
  • JSF
阅读更多
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

 

如同在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入门》简体中文版修正版(含页面间导航)

    3. **JSF Expression Language (EL)** EL是JSF中的一个重要组成部分,它允许在页面中直接访问后台Bean的属性,实现数据绑定。在"JSF Expression Language.htm"中,你会看到如何使用EL表达式来简化页面和Bean之间的...

    JSF入门必读——JSF入门基础

    JSF Expression Language是用于访问和操作后台Bean属性、方法以及上下文数据的语言。EL表达式可以在JSF页面上直接嵌入,用于动态地生成内容或控制组件行为。 4. 国际化 JSF支持国际化,允许开发者为不同的语言和...

    java JSF入门

    JSF Expression Language 是一种轻量级的脚本语言,用于在JSF应用中访问和操作Java对象。EL允许你在JSP或XHTML页面中直接引用JavaBean属性,执行基本的算术和逻辑运算,以及调用方法。 #### 1.6 国际化信息 JSF ...

    JSF课件.ppt

    **JSF Expression Language (EL)**:是JSF中的一个重要特性,它是一种简洁的语言,用于在页面上访问和操作Bean的属性。例如,`#{someBeanName}`是EL表达式,可以在JSF标签中直接引用Bean的属性。 **JSF标签**:JSF...

    JSF基础教程 简体中文

    o JSF Expression Language o 国际化讯息 Managed Beans JSF 使用 Bean 来达到逻辑层与表现层分离的目的,Bean 的管理集中在组态档案中,您只要修改组态档案,就可以修改 Bean 之间的相依关系。 o Backing Beans o ...

    jsf核心编程源码

    3. **表达式语言(EL)**:JSF Expression Language(EL)允许在页面上引用JavaBean或其他服务器端对象的属性,简化了数据绑定。 4. **Faces Servlet**:JSF框架的核心是FacesServlet,它负责处理所有JSF相关的HTTP...

    有关JSF框架简洁中文教程

    JSF框架中文教程,包括JSF入门、Backing Beans、Beans 上的 List, Map、JSF Expression Language、JSF 生命周期、Phase 事件、TableModel 类别、等有关jsf的知识。

    jsf.rar_DEMO_jsf mex

    JSF Expression Language (EL)** EL是JSF中用于在视图层引用后台Bean属性的表达式语言。在Facelets模板中,EL通常用来绑定组件值到Managed Bean的属性。在DEMO中,EL的使用会帮助我们理解数据如何在前后台之间流动...

    JSF教程 中文版

    部分内容截取: 1. 入门 1.1 简介JSF 1.2 第一个JSF程序 1.3简单的导航 Navigation 1.4导航规则设置 1.5 JSF Expression Language 1.6国际化信息 ......

    JSF教程入门

    - **1.5 JSF Expression Language (EL)**:探讨JSF表达式语言的作用,如何使用EL来进行数据绑定、访问Bean属性及执行简单的运算。 - **1.6 国际化信息**:学习如何在JSF应用中实现多语言支持,包括消息资源文件的...

    JSF学习笔记

    **JSF Expression Language (EL)** 是一种轻量级的语言,用于访问和操纵JavaBeans属性。它在JSF中用于将页面元素与后端Managed Beans进行绑定,从而实现数据的双向绑定。 **EL示例**: ```html ``` 在这个例子中,...

    JSF入门必看

    1.1 简介 JSF 1.2 第一个 JSF 程序 1.3 简单的导航 Navigation 1.4 导航规则设置 1.5 JSF Expression Language 1.6 国际化信息 2. Managed Beans

    JSF入门级教程

    1.5 JSF Expression Language JSF框架提供了一个表达式语言,允许开发者在JSF页面中使用表达式。JSF表达式语言支持以下几种运算符: * 算术运算符:+、-、*、/等 * 比较运算符:==、!=、&gt;、&lt;等 * 逻辑运算符:&&、...

    Expression Language 3.0新特性

    Expression Language(EL)是Java EE平台中的一个关键组件,它用于在JSP、JSF等Web应用程序中方便地访问和操作服务器端的数据。EL 3.0是该语言的一个重大更新,引入了许多新特性和改进,提升了开发人员的效率和代码...

Global site tag (gtag.js) - Google Analytics