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
。