4.4 使用其他EL运算符

4.4 使用其他EL运算符

除了.[]运算符外,EL还提供了其他运算符:

  • 算术运算符、
  • 关系运算符、
  • 逻辑运算符、
  • 条件运算符
  • 以及empty运算符。

使用这些运算符时,可以进行不同的运算。但是,由于EL的目的是为了写出无脚本的JSP页面,因此,除了关系运算符外,这些EL运算符的用处都很有限。

4.4.1 算术运算符

算术运算符有5种:

  • 加法(+
  • 减法(
  • 乘法(*
  • 除法(/div
  • 求余/取模(%mod

除法和取余运算符有两种形式,与XPathECMAScript是一致的。

优先级

注意,EL表达式的计算按优先级从高到低、从左到右进行。下列运算符是按优先级递减顺序排列的:

1
2
*、/、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}

**如果Xnull,或者说X是一个长度为0的字符串,那么该表达式将返回true如果X是一个空的Map、空的数组或者空的集合,它也将返回true**,否则,将返回false