`
zhouxing
  • 浏览: 199751 次
  • 性别: 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入门pdf

    1.5 JSF Expression Language 1.6国际化信息 2. Managed Beans 2.1 Backing Beans 2.2 Beans的配置与设定 2.3 Beans上的List, Map 3. 数据转换与验证 3.1 标准转换器 3.2自定义转换器 3.3标准验证器 3.4自定义验证器...

    JSF基础教程 简体中文

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

    有关JSF框架简洁中文教程

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

    JSF教程 中文版

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

    JSF入门必看

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

    java server face 教程

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

    RSBK_ExpressionLanguage_JSF

    RSBK_ExpressionLanguage_JSF

    Practical JSF in Java EE 8 pdf

    Process user input with JSF and the expression language by building a calculator application Persist data using JSF templating and Java Persistence to manage an inventory of books Create and manage an...

    Practical JSF in Java EE 8--2018

    Process user input with JSF and the expression language by building a calculator application Persist data using JSF templating and Java Persistence to manage an inventory of books Create and manage...

    JSF入门文档(英文ppt)

    ...........\04-Expression-Language.pdf ...........\05-Properties-Files.pdf ...........\06-Event-Handling.pdf ...........\07-HTML-Library.pdf ...........\08-Validation.pdf ...........\09-JDBC.pdf...

    Apress.Beginning.Java.EE.7.2013

    Discover web tier development APIs including JSF, Facelets and Expression Language. Uncover SOAP web services, RESTful web services, and more available in this latest Java EE. Create dynamic user ...

    Beginning.Java.EE.7

    Discover web tier development APIs including JSF Facelets and Expression Language Uncover SOAP web services RESTful web services and more available in this latest Java EE Create dynamic user ...

    Spring EL.docx

    Spring Expression Language(简称SpEL)是一种功能强大的表达式语言、 在Spring3中就已经支持EL表达式了, Spring Expression Language(SpEL)是类似于OGNL和JSF EL的表达式语言, 能够在运行时构建复杂表达式, 存取...

    Apress.Beginning.Java.EE.6.with.GlassFish.3.2nd.Edition

    * Discover the new web tier development APIs including JSPs, JSTL, and Expression Language, and especially the new JSF 2.0 and Facelets. * Uncover the new web services, RESTful services, and more ...

    JSTL1.2详细配置

    The most important difference is that JSTL 1.2.x supports Unified EL (Expression Language) , where as JSTL 1.1.x supports only traditional EL. With Unified EL it becomes very easy to combine the EL ...

    Beginning Java EE 6 with GlassFish 3, 2nd Edition

    * Discover the new web tier development APIs including JSPs, JSTL, and Expression Language, and especially the new JSF 2.0 and Facelets. * Uncover the new web services, RESTful services, and more ...

    javaee API

    javax.el Provides the API for the Unified Expression Language shared by the JSP 2.1 and JSF 1.2 technologies. javax.enterprise.deploy.model Provides Tool Vendor implementation classes. javax....

    JSP2.0技术手册pdf(带示例源码).zip

    第六章 Expression Language 6-1 EL 简介 6-2 EL 语法 6-3 EL 隐含对象 6-4 EL 算术运算符 6-5 EL 关系运算符 6-6 EL 逻辑运算符 6-7 EL 其他运算符 6-8 EL Functions 第七章 JSTL 1.1 7-1 JSTL 1.1 简介 7-2 核心...

    Aspect-js:适用于SPA的Fullstack JavaScript UI框架,包括。 渲染,mvc,模型,表达语言,数据源,虚拟路径,单元测试等

    受JSF(Java Server Faces)关于功能以及易于集成到标记方面的良好经验的影响,出现了类似的客户端全栈解决方案。 Seanox Aspect-js专注于实现单页应用程序(SPA)的简约方法。 该框架采用了HTML的声明性方法,并...

Global site tag (gtag.js) - Google Analytics