当前位置 : 主页 > 编程语言 > java >

jsp – 比较EL表达式中的数字似乎不起作用

来源:互联网 收集:自由互联 发布时间:2021-06-25
在JSP中,我想比较两个变量 如果我做: c:set var="pagerTotDisp" value="9"/c:if test="${pagerTotDisp 8}" spanpagerTotDisp above 8/span/c:if 它按预期显示“pagerTotDisp 8以上” c:set var="TotalPages" value="10"/c:if test=
在JSP中,我想比较两个变量

如果我做:

<c:set var="pagerTotDisp" value="9"/>
<c:if test="${pagerTotDisp > 8}">
  <span>pagerTotDisp above 8</span>
</c:if>

它按预期显示“pagerTotDisp 8以上”

<c:set var="TotalPages" value="10"/>
<c:if test="${TotalPages > 2}">
  <span>TotalPages above 2</span>
</c:if>

它按预期显示“pagerTotDisp 8以上”

但是如果我这样做的话

<c:set var="pagerTotDisp" value="9"/>
<c:set var="TotalPages" value="10"/>
<c:if test="${TotalPages < pagerTotDisp}">
  <span>This condition is not true. This text should not be displayed</span>
</c:if>

它显示“此条件不成立.不应显示此文本”.

这是怎么回事?
该JSP无法在相同条件下处理两个变量吗?

谢谢

您正在对< c:set>的value属性中的值进行硬编码. < c:set>将硬编码值视为String.因此EL也将它们评估为String.按字典顺序,9大于10,因为9位于比1更远的数字位置.

有两种方法可以解决这个问题:

>通过EL表达式设置值.它将被解释为Long而不是String.

<c:set var="pagerTotDisp" value="${9}" />
<c:set var="TotalPages" value="${10}" />

>或者,使用<fmt:parseNumber>,这将是唯一的解决方案,如果你有来自其他地方的字符串变量,你无法控制.

<fmt:parseNumber var="pagerTotDisp" value="9" />
<fmt:parseNumber var="TotalPages" value="10" />
网友评论