取得某个对象或集合中的属性值
为了获得集合中的属性,EL支持以下两种操作
1. 使用.操作符来获得有名字的属性。例如表达式${user.username}表明对象user的username属性
2. 使用[]操作符来获得有名字或按数字排列的属性。
表达式${user["username"]}和表达式${user. username }含义相同
表达式${row[0]} 表明row集合的第一个条目。
在这里user是一个类的对象,它的属性username必须符合标准JavaBean的规范,即必须为username属性定义相应的getter、setter方法。
使用empty操作符来决定对象、集合或字符串变量是否为空或null。例如
${empty param.username}
如果request的参数列表中的username值为null,则表达式的值为true。
EL也可以直接使用比较操作符与null进行比较。如${param.firstname == null}。
比较操作符 | 描述 |
---|---|
== 或 eq | 相等检查 |
!= 或 ne | 不等检查 |
< 或 lt | 小于检查 |
> 或 gt | 大于检查 |
<= 或 le | 小于等于检查 |
>= 或 ge | 大于等于检查 |
${(empty student.name)?'空':'非空'}
empty 判断值为空则返回真(true),不为空返回假(false)
<c:if test="${! empty obj}">
${obj.name}
</c:if>
或
<c:if test="${not empty obj}">
${obj.name}
</c:if>
规则:
1.若obj为null时,返回true.
2.若obj为空String时,返回true
3.若obj为空Array时,返回true
4.若obj为空Map时,返回true
5.若obj为空Collection时,返回true
6.否则,返回false
EL表达式中还有许多操作符可以帮助完成各种所需的操作,之前的示例中“.”、“[]”就是其中的两个
操作符 功能和作用
. 访问一个bean属性或者Map entry
[] 访问一个数组或者链表元素
() 对子表达式分组,用来改变赋值顺序
? : 条件语句,比如:条件?ifTrue:ifFalse,如果条件为真,表达式值为前者,反之为后者
+ 数学运算符,加操作
- 数学运算符,减操作或者对一个值取反
* 数学运算符,乘操作
/或div 数学运算符,除操作
%或mod 数学运算符,模操作(取余)
==或eq 逻辑运算符,判断符号左右两端是否相等,如果相等返回true,否则返回false
!=或ne 逻辑运算符,判断符号左右两端是否不相等,如果不相等返回true,否则返回false
<或lt 逻辑运算符,判断符号左边是否小于右边,如果小于返回true,否则返回false
>或gt 逻辑运算符,判断符号左边是否大于右边,如果大于返回true,否则返回false
<=或le 逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回true,否则返回false
>=或ge 逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回true,否则返回false
&&或and 逻辑运算符,与操作赋。如果左右两边同为true返回true,否则返回false
||或or 逻辑运算符,或操作赋。如果左右两边有任何一边为true返回true,否则返回false
!或not 逻辑运算符,非操作赋。如果对true取运算返回false,否则返回true
empty 用来对一个空变量值进行判断: null、一个空String、空数组、空Map、没有条目的Collection集合
func(args) 调用方法, func是方法名,args是参数,可以没有,或者有一个、多个参数.参数间用逗号隔开
这些操作符都是极其有用的,下面通过几个示例来演示它们的使用方法:
几组操作符的示例:
${pageScope.sampleValue + 12} <br> // 显示 12
${(pageScope.sampleValue + 12)/3} <br> // 显示 4.0
${(pageScope.sampleValue + 12) /3==4} <br> // 显示 true
${(pageScope.sampleValue + 12) /3>=5} <br> // 显示 false
<input type="text" name="sample1" value="${pageScope.sampleValue + 10}"> // 显示值为 10 的 Text 控件
可以看到,对于这些示例,程序设计者完全无需管理它们的类型转换,在表达式内部都已经处理了.有了EL表达式,在JSP页面的编程变得更灵活,也更容易。