文档章节

JSF---->JSF Expression Language

小强斋太
 小强斋太
发布于 2016/11/09 20:07
字数 1087
阅读 36
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

JSF Expression Language 搭配 JSF 标签来使用,是用来存取数据对象的一个简易语言。 JSF EL是以#开始,将变量或表达式放置在{ 与 } 之间

一、引用简单的对象属性

<f:view>
    <h:outputText value="#{userBean.name}"/>
</f:view>
在JSF卷标的属性上," 与 " (或'与')之间如果含有EL,则会加以运算,您也可以这么使用它:
...
<f:view>
 名称, 年龄:
 <h:outputText value="#{userBean.name}, #{userBean.age}" />
</f:view>
...
一个执行的结果可能是这样显示的:

名称, 年龄:Justin, 29

二、访问复杂属性(Map、Collec­tion和数组)

对于Map型态对象,我们可以使用 '.' 运算子指定key值来取出对应的value,也可以使用 [ 与 ] 来指定

<h:outputText value="#{param['name']}"/>

如果变量是List型态或数组的话,则可以在 [] 中指定索引

<h:outputText value="#{someBean.someList[0]}"/>    

<h:outputText value="#{someBean.someArray[1]}"/>

三、使用EL来作为逻辑和数值语句,并且在表达式中混合使用字面值。

您也可以指定字面常数,对于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) 。

四、方法绑定表达式

当使用EL来引用bean方法时,则称之为方法绑定表达式(method-binding expression)。方法绑定表达式,如"#{myBean.methodName}",用来将监听器方法或验证器方法关联至组件。

五、EL的变量名也可以程序执行过程中所宣告的名称,或是JSF EL预设的隐含对象,

JSF所提供的隐含对象,大致上对应于JSP隐藏对象,不过JSF隐含对象移除了pageScope与pageContext,而增加了facesContext与view,它们分别对应于javax.faces.context.FacesContext与javax.faces.component.UIViewRoot例如下面的程序使用param隐含对象来取得使用者输入的参数:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> 
<%@ tagliburi="http://java.sun.com/jsf/html" prefix="h" %> 
<%@pagecontentType="text/html; charset=Big5"%>
<html>
 <head>
  <title></title>
 </head>
 <body>
  <f:view>
   <b>
    您好,
    <h:outputText value="#{param.name}" />
   </b>
  </f:view>
 </body>
</html>

JSF EL支持访问常用对象的隐含变量。它们中大多数同时也被JSP 2.0 EL所支持

 

隐含变量

 

说    明

 

实    例

JSP 2.0 EL是否支持?

 

applicationScope

应用作用域变量的Map,以名称作为关键字

#{applicationScope.myVariable}

 

 

cookie

一个当前请求的cookie值的Map,以cookie名称作为关键字

#{cookie.myCookie}

 

 

facesContext

当前请求的FacesContext 实例

#{facesContext}

 

 

header

当前请求的HTTP首部值的 Map,以header名称作为关键字。如果给定的header 名称有多个值,仅返回第1个值

#{header['User-Agent']}

 

 

headerValues

当前请求的HTTP首部值的 Map,以header名称作为关键字。对每个关键字,返回一个String数组(以便所有的值都能访问)

 

#{headerValues

['Accept-Encoding'][3]}

 

 

initParam

应用初始化参数的Map,以参数名称为关键字。(也称为servlet 上下文初始化参数,在部署描述符中设置)

 

#{initParam.adminEmail}

 

 

param

请求参数的Map,以header 名称作为关键字。如果对给定的参数名称有多个值,仅返回第1个值

 

#{param.address}

 

 

paramValues

请求参数的Map,以header 名称作为关键字。对每个关键字,返回一个String数组(以便可以访问所有的值)

 

#{param.address[2]}

 

 

requestScope

请求范围内的变量的Map,以名称作为关键字

#{requestScope.user-Preferences}

 

 

sessionScope

会话范围内的变量的Map,以名称作为关键字

#{sessionScope['user']}

 

view

当前视图

#{view.locale}

 

有两个变量是针对JSF的:facesContext和view。FacesContext实例代表当前正在处理的请求。它持有对当前应用消息栈、当前呈现包和其他一些有用对象的引用。对前端开发来说,view具有一些有用的属性:viewId、renderKitId和locale。

 

 

小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
私信 提问
加载中
请先登录后再评论。
DKPro Core

DKPro Core 是基于 Apache UIMA 框架之上的自然语言处理(NLP)的软件组件。DKPro Core 提供了这样的第三方工具以及原NLP组件的包装。 DKPro核心建立在很大程度上uimaFIT可以快速方便的开发N...

匿名
2012/10/24
1.8K
0
编程语言--Tcl/Tk

Tcl/Tk 是一种简明,高效,可移植性好的编程语言。在信息产业领域具有广泛的应用。 Tcl/Tk 的发明人 John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电...

匿名
2012/11/11
8.7K
0
开源人力资源系统--ehr

开源人力资源系统说明 本项目采用GPL v2授权协议。 项目目标: 1.提供一个开源的、可用的企业级人力资源管理系统 2.系统支持多分支机构人力资源的集中管理 3.系统准备实现的功能模块:组织机...

zhjin
2013/06/07
3.3W
0
理解Swift中Optional类型-有和无的哲学

原文连接:http://blog.barat.cc/ios/understanding-swift-optional/ nil的遗憾 当某个变量或表达式没有任何内容时,在Objective-C中可以使用来表示。在Objective-C中是一个「野孩子」,voi...

巴拉迪维
2015/11/19
1.8K
9
python使用pickle,marshal进行序列化、反序列及JSON的使用

Pickle序列化 python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我...

cloud-coder
2015/12/16
1.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

Hacker News 简讯 2020-08-15

最后更新时间: 2020-08-15 04:01 Welders set off Beirut blast while securing explosives - (maritime-executive.com) 焊工在固定炸药的同时引爆了贝鲁特爆炸 得分:215 | 评论:209 Factor......

FalconChen
今天
24
0
OSChina 周六乱弹 —— 老椅小猫秋乡梦 梦里石台堆小鱼

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @小小编辑 :《MOM》- 蜡笔小心 《MOM》- 蜡笔小心 手机党少年们想听歌,请使劲儿戳(这里) @狄工 :腾讯又在裁员了,35岁以上清退,抖音看到...

小小编辑
今天
71
1
构建高性能队列,你不得不知道的底层知识!

前言 本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。 你好,我是彤哥。 上一节,我们一起学习了如何将递归改写为非递归,其中,用到的数据结构主要是栈。 栈和队列...

彤哥读源码
今天
17
0
Anaconda下安装keras和tensorflow

Anaconda下安装keras和tensorflow 一、下载并安装Anaconda: Anaconda下载 安装步骤: 如果是多用户操作系统选择All Users,单用户选择Just Me 选择合适的安装路径 然后勾选这个,自动配置环境...

Atlantis-Brook
今天
15
0
滴滴ElasticSearch千万级TPS写入性能翻倍技术剖析

桔妹导读:滴滴ElasticSearch平台承接了公司内部所有使用ElasticSearch的业务,包括核心搜索、RDS从库、日志检索、安全数据分析、指标数据分析等等。平台规模达到了3000+节点,5PB 的数据存储...

滴滴技术
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部