软件开发实训(720科技)第四课 :表达式语言

内容关键词:EL表达式,JSP页面

授课老师:720科技张森鹏

一、知识笔记

EL 表达式以 ${ 开头,并以 } 结束。EL 表达式的结构如下:

${expression}

#{expression}

在 JSF 中,${exp}
结构用于立即计算,#{expr}结构用于延迟计算(即表达式直到系统需要它的值时,才进行计

算)。      

另一方面,立即计算的表达式,会在 JSP 页面编译时同时编译,并在执行 JSP 页面时被执

行。在 JSP 2.1 和更高版本中,#{exp}表达式只能在接受延迟表达式的标签属性中使用。    


如果在定制标签的属性值中使用 EL 表达式,那么该表达式的取值结果字符串将会强制
变成该属性需要的类型:
<my:tag someAttribute="${expression}"/>
像${这样的字符顺序就表示是一个 EL 表达式的开头。如果需要的只是文本${,则需要在

它前面加一个转义符,如\${。


以下是关键字,它们不能用作标识符and eq gt true instanceofor ne le false empty

not lt ge null div mod

EL 表达式可以返回任意类型的值。如果 EL 表达式的结果是一个带有属性的对象,则可以利
用[ ]或者.运算符来访问该属性。[ ]和.运算符类似;[ ]是比较规范的形式,.运算符则比较快捷。

多数情况下建议使用[ ]运算符,因为对于一些不合法的java变量名,使用 .运算符去访问它,将会导致异常。

EL 表达式的取值是从左到右进行的。对于 expr-a[expr-b]形式的表达式,其 EL 表达式的取值方法如下:
(1)先计算 expr-a 得到 value-a。
(2)如果 value-a 为 null,则返回 null。
(3)然后计算 expr-b 得到 value-b。

(4)如果 value-b 为 null,则返回 null

(5)如果 value-a 为 java.util.Map,则会查看 value-b 是否为 Map 中的一个 key。若是,则
返回 value-a.get(value-b),若不是,则返回 null。

(6)如果 value-a 为 java.util.List,或者假如它是一个 array,则要进行以下处理:

a.强制 value-b 为 int,如果强制失败,则抛出异常。
b.如果 value-a.get(value-b)抛出 IndexOutOfBoundsException,或者假如 Array.get
(value-a, value-b)抛出 ArrayIndexOutOfBoundsException,则返回 null。
c.否则,若 value-a 是个 List,则返回 value-a.get(value-b);若 value-a 是个 array,

则返回 Array.get(value-a, value-b)。

(7)如果 value-a 不是一个 Map、List 或者 array,那么,value-a 必须是一个 JavaBean。
在这种情况下,必须强制 value-b 为 String。如果 value-b 是 value-a 的一个可读属性,则要调
用该属性的 getter 方法,从中返回值。如果 getter 方法抛出异常,该表达式就是无效的,否则,

该表达式有效。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值