EL关系运算符

来源:互联网 发布:淘宝点击热力图 编辑:程序博客网 时间:2024/05/17 04:16
  • EL 算术运算符主要有以下五个:

算术运算符    说 明    范 例    结 果
+ 加 ${ 17 + 5 } 22
- 减 ${ 17 - 5 } 12
* 乘 ${ 17 * 5 } 85
/ 或 div 除 ${ 17 / 5 } 或 ${ 17 div 5 } 3
% 或 mod 余数 ${ 17 % 5 } 或 ${ 17 mod 5 } 2

 

(1) A {+ ,- , *} B
● 假若A 和B 为null:回传 (Long)0
● 假若A 或B 为BigDecimal 时,将另一个也转为BigDecimal,则:
·假若运算符为 + 时:回传 A.add(B)
·假若运算符为 - 时:回传 A.subtract(B)
·假若运算符为 * 时:回传 A.multiply(B)
● 假若A 或B 为Float、Double 或包含 e / E 的字符串时:
·假若A 或B 为BigInteger 时,将另一个转为BigDecimal,然后依照运算符执行
运算
·否则,将两者皆转为Double,然后依照运算符执行运算
● 假若A 或B 为BigInteger 时,将另一个也转为BigInteger,则:
·假若运算符为 + 时:回传 A.add(B)
·假若运算符为 - 时:回传 A.subtract(B)
·假若运算符为 * 时:回传 A.multiply(B)
● 否则,将A 和B 皆转为Long,然后依照运算符执行运算
● 假若运算结果产生异常时,则错误!
(2) A {/ , div} B
● 假若A 和B 为null:回传 (Long)0
● 假若A 或B 为BigDecimal 或BigInteger 时,皆转为BigDecimal,然后回传 A.divide(B,BigDecimal.ROUND_HALF_UP)

● 否则,将A 和B 皆转为Double,然后依照运算符执行运算
● 假若运算结果产生异常时,则错误!
(3) A {% , mod} B
● 假若A 和B 为null:回传 (Long)0
● 假若A 或B为BigDecimal、Float、Double或包含 e / E 的字符串时,皆转为Double,然
后依照运算符执行运算
● 假若A 或B 为BigInteger 时,将另一个转为BigInteger,则回传 A.remainder(B)
● 否则,将A 和B 皆转为Long,然后依照运算符执行运算
● 假若运算结果产生异常时,则错误!
(4) -A
● 假若A 为null:回传 (Long)0
● 假若A 为BigDecimal 或BigInteger 时,回传 A.negate( )
● 假若A 为String 时:
·假若A 包含 e / E 时,将转为Double,然后依照运算符执行运算
·否则,转为Long,然后依照运算符执行运算
·假若运算结果产生异常时,则错误!
● 假若A 为Byte、Short、Integer、Long、Float 或Double
·直接依原本类型执行运算
·假若运算结果产生异常时,则 错误!
● 否则,错误!


Tomcat 上的jsp-examples 中,有一个EL算术运算符的范例 basic-arithmetic.jsp。

 

  • EL 关系运算符有以下六个运算符:

关系运算符    说 明    范 例    结 果
= = 或 eq 等于 ${ 5 = = 5 } 或 ${ 5 eq 5 } true
!= 或 ne 不等于 ${ 5 != 5 } 或 ${ 5 ne 5 } false
< 或 lt 小于 ${ 3 < 5 }或 ${ 3 lt 5 } true
> 或 gt 大于 ${ 3 > 5 }或 ${ 3 gt 5 } false
<= 或 le 小于等于 ${ 3 <= 5 }或 ${ 3 le 5 } true
>= 或 ge 大于等于 ${ 3 >= 5 }或 ${ 3 ge 5 } false

 

注意
在使用EL 关系运算符时,

不能够写成:
${param.password1} = = ${param.password2}
或者
${ ${param.password1 } = = ${ param.password2 } }
而应写成

(1) A {<, >, <=, >=, lt, gt, le, ge} B
● 假若A= = B,运算符为<=, le, >=, ge 时,回传true,否则回传false
● 假若A 为null 或B 为null 时,回传false
● 假若A或B为BigDecimal时,将另一个转为BigDecimal,然后回传A.compareTo(B)的值
● 假若A 或B 为Float、Double 时,皆转为Double 类型,然后依其运算符运算
● 假若A或B为BigInteger时,将另一个转为BigInteger,然后回传A.compareTo(B)的值
● 假若A 或B为Byte、Short、Character、Integer或Long时,皆转为Long 类型,然后依其
运算符运算
● 假若A 或B 为String 时,将另一个也转为String,然后做词汇上的比较
● 假若A 为Comparable 时,则:
·假若A.compareTo(B)产生异常时,则错误!
● 否则,采用 A.compareTo(B) 的比较结果
● 假若B 为Comparable 时,则:
· 假若B.compareTo(A)产生异常时,则错误!
● 否则,采用 A.compareTo(B) 的比较结果
● 否则,错误!
(2) A {= =, !=, eq, ne} B
● 假若A= = B,依其运算符运算
● 假若A 为null 或B 为null 时:= = /eq 则回传false,!= / ne 则回传true
● 假若A 或B 为BigDecimal 时,将另一个转为BigDecimal,则:
· 假若运算符为 = = / eq,则 回传A.equals(B)
· 假若运算符为 != / ne,则 回传 !A.equals(B)

${ param.password1 = = param.password2 }

● 假若A 或B 为Float、Double 时,皆转为Double 类型,然后依其运算符运算
● 假若A 或B 为BigInteger 时,将另一个转为BigInteger,则:
·假若运算符为 = = / eq,则 回传A.equals(B)
·假若运算符为 != / ne,则 回传 !A.equals(B)
● 假若A 或B为Byte、Short、Character、Integer 或Long时,皆转为Long 类型,然后依其
运算符运算
● 假若A 或B 为Boolean 时,将另一个也转为Boolean,然后依其运算符运算
● 假若A 或B 为String 时,将另一个也转为String,然后做词汇上的比较
● 否则,假若A.equals(B)产生异常时,则 错误!
● 否则,然后依其运算符运算,回传 A.equals(B)


Tomcat 上的jsp-examples 中,有一个EL 关系运算符的范例basic-comparisons.jsp。

 

  • EL 逻辑运算符只有三个:

逻辑运算符    说 明    范 例    结 果
&& 或 and 交集 ${ A && B } 或 ${ A and B } true / false
|| 或 or 并集 ${ A || B } 或 ${ A or B } true / false
! 或 not 非 ${ !A } 或 ${ not A } true / false

 

下面举几个例子:
${ param.month = = 7 and param.day = = 14 }
${ param.month = = 7 || param.day = = 14 }
${ not param.choice }


EL 逻辑运算符的规则很简单:
(1) A {&&, and, || 或 or } B
·将A 和B 转为Boolean,然后依其运算符运算
(2) {!, not}A

·将A 转为Boolean,然后依其运算符运算

 

  • EL 除了上述三大类的运算符之外,还有下列几个重要的运算符:
    (1) Empty 运算符
    (2) 条件运算符
    (3) ( ) 括号运算符

(1) Empty 运算符
Empty 运算符主要用来判断值是否为null 或空的,例如:

${ empty param.name }
接下来说明Empty 运算符的规则:
(1) {empty} A
● 假若A 为null 时,回传true
● 否则,假若A 为空String 时,回传true
● 否则,假若A 为空Array 时,回传true
● 否则,假若A 为空Map 时,回传true
● 否则,假若A 为空Collection 时,回传true
● 否则,回传false


(2) 条件运算符
所谓条件运算符如下:
${ A ? B : C}
意思是说,当A 为true 时,执行B;而A 为false 时,则执行C。

 

(3) 括号运算符
括号运算符主要用来改变执行优先权,例如:${ A * (B+C) }
至于运算符的优先权,如下所示(由高至低,由左至右):
· []、.
· ( )
· - (负)、not、!、empty
· *、/、div、%、mod
· +、- (减)
· <、>、<=、>=、lt、gt、le、ge
· = =、!=、eq、ne
· &&、and

0 0
原创粉丝点击