4.4 使用其他EL运算符
4.4 使用其他EL运算符
除了.和[]运算符外,EL还提供了其他运算符:
- 算术运算符、
- 关系运算符、
- 逻辑运算符、
- 条件运算符
- 以及
empty运算符。
使用这些运算符时,可以进行不同的运算。但是,由于EL的目的是为了写出无脚本的JSP页面,因此,除了关系运算符外,这些EL运算符的用处都很有限。
4.4.1 算术运算符
算术运算符有5种:
- 加法(
+) - 减法(
−) - 乘法(
*) - 除法(
/和div) - 求余/取模(
%和mod)
除法和取余运算符有两种形式,与XPath和ECMAScript是一致的。
优先级
注意,EL表达式的计算按优先级从高到低、从左到右进行。下列运算符是按优先级递减顺序排列的:
1 | *、/、div、%、mod |
这表示*、/、div、%以及mod运算符的优先级别相同,+与−的优先级别相同,但第二组运算符的优先级小于第一组运算符。因此,表达式:
1 | ${1+2*3} |
的运算结果是7,而不是9。
4.4.2 逻辑运算符
下面是逻辑运算符列表:
- 与运算(
&&或者and) - 或运算(
||或者or) - 非运算(
!或者not)
4.4.3 关系运算符
下面是关系运算符列表:
- 等于(
==或者eq) - 不等于(
!=或者ne) - 大于(
>或者gt) - 大于或等于(
>=或者ge) - 小于(
<或者lt) - 小于或等于(
<=或者le)
例如,表达式${3==4}返回false,${"b"<"d"}则返回true。
条件运算符
1 | ${statement? A:B} |
如果statement的计算结果为true,那么该表达式的输出结果就是A,否则为B。
例如,利用下列EL表达式可以测试HttpSession中是否包含名为loggedIn的属性。如果找到这个属性,就显示You have logged in,否则显示You have not logged in:
1 | ${(sessionScope.loggedIn==null)? "You have not logged in":"You have logged in"} |
4.4.4 empty运算符
empty运算符用来检查某一个值是否为null或者empty。下面是一个empty运算符的使用范例:
1 | ${empty X} |
**如果X为null,或者说X是一个长度为0的字符串,那么该表达式将返回true。如果X是一个空的Map、空的数组或者空的集合,它也将返回true**,否则,将返回false。