`
tntxia
  • 浏览: 1488218 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JSF Expression Language

阅读更多

 

JSF Expression Language 搭配 JSF 标签来使用,是用来存取数据对象的一个简易语言。

  JSF EL是以#开始,将变量或表达式放置在

Unknown macro: { 与 }
之间,例如:

 

#{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