EL运算表达式和JSTL标签

来源:互联网 发布:ubuntu 16.04中文版 编辑:程序博客网 时间:2024/06/09 11:45
<span style="font-size:14px;"><span style="font-size:14px;">项目中,需要计算金额并保留2位小数,在前台展示的时候是2个结果的乘积,以前的时候一直在后台进行转换,比方说一直用的BigDecimal对象,先要转为double在转为String,很麻烦的然后,同事说其实可以直接在JSP页面用JSTL标签做运算,然后百度了下,果然。。。。。。java要学的东西真的很多,我太二啦 乘法运算保留2位小数,后面的patern minFractionDigts 2个属性如果不指定的话,就会默认为整数   <fmt:formatNumber value=" ${query.countFee * query.corpr_ratio}" pattern="#.##" minFractionDigits="2"/>JSTL 中文教程可参考:<span style="color:#FF0000;">http://www.yiibai.com/jstl/jstl_format_parsedate_tag.html</span></span><pre name="code" class="java"><span style="font-size:14px;">    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</span>

可以大致浏览下,以后用的时候可以再去看!!
0 0