`
yingfang05
  • 浏览: 122949 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

jsf第四讲

    博客分类:
  • jsf
阅读更多
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第三讲事件监听

    在JavaScript Server Faces (JSF) 中,事件监听是框架的核心特性之一,它允许开发者处理用户在Web界面中的交互。JSF事件模型基于JavaBeans事件模型,使得组件间能够通过事件进行通信,增强了组件间的协作能力。本...

    韩顺平_细说jsp第1讲.开山篇

    【标题】"韩顺平_细说jsp第1讲.开山篇" 是一个由知名IT讲师韩顺平主讲的JSP(Java Server Pages)技术入门教程,旨在帮助初学者理解和掌握JSP的基本概念和核心语法。在这个“开山篇”中,韩顺平老师将引导我们走进...

    浪曦\浪曦_Struts2应用开发系列_第1讲

    - **JSF(JavaServer Faces)**:将Struts2与JSF结合,利用JSF的组件模型和Struts2的灵活性。 - **Ajax**:利用Struts2的Ajax支持,实现页面局部更新,提高用户体验。 - **Hibernate**:整合ORM框架,简化数据库...

    第1讲 Java EE技术概述

    ### 第1讲 Java EE技术概述 #### 一、Java 平台分类及概述 Java 平台由 Sun 公司开发,并根据不同应用领域分为三个主要版本:Java SE(标准版)、Java EE(企业版)和 Java ME(微型版)。这三个版本各自针对不同...

    ejb3 第5讲--通过ANT提高EJB应用的开发效率

    **ejb3 第5讲 -- 通过ANT提高EJB应用的开发效率** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建企业级应用程序。EJB 3.0是一个重要的里程碑,它极大地简化了EJB的开发,提高了开发效率。在本...

    JAVA的阅读资料11

    在提供的文件列表中,我们看到一个名为"第五课讲议.xls"的文件。这很可能是课程的第五课讲义,包含了关于Java EE的特定主题或概念的教学材料。在Excel格式中,它可能包含表格、图表、练习或者讲解,帮助学习者理解并...

    javaee的程序设计

    在"第一讲.txt"可能涉及JavaEE的基础概念介绍,而"BookStoreSys"可能是一个示例项目,展示了一个基于JavaEE的书店管理系统的设计和实现,包括用户注册登录、书籍浏览、购买等功能,涵盖了上述许多JavaEE技术的实战...

    Oracle9i备课笔记——吕海东

    第1讲 Oracle9i简介 目的: 1. 了解数据库的发展,关系数据库的基本原理。 2. 了解目前市场上流行的数据库产品及特点 3. 了解Oracle数据库的发展 4. 掌握Oracle9i产品系列 5. 掌握Oracle9i Database Server的新特点...

    java初学者的工具ppt文件

    接下来选择学习Java EE或是Java ME(或者你还想不断深入学习JavaSE,只要你喜欢,你可以一直深入下去,就像前面所说的,我不会讲到Java ME的学习);估计选择Java EE方面的学习者会多一些,JavaEE所涉及技术非常多,...

    整理后java开发全套达内学习笔记(含练习)

    以“%”开头,[第几个数值$][flags][宽度][.精确度][格式] printf()的引入是为了照顾c语言程序员的感情需要 格式化输出 Formatter;格式化输入 Scanner;正则表达式 输出格式控制: 转义符: \ddd 1到3位8...

    Java经典入门教程pdf完整版

    就是JSF。 2:Java微缩版:JME( Java Micro edition) JE(Java, Micro edition)是对标准版JSE进行功能缩减后的版本,于199年6月 由 Sun Microsystems第一次推向Java团体。它是一项能更好满足Java开发人员不同需求 的广泛...

Global site tag (gtag.js) - Google Analytics