在EL表达式中比较数字似乎不起作用
在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不能在相同条件下处理两个变量吗?
谢谢
回答:
您正在硬编码的value
属性中的值<c:set>
。该<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>
,如果您将其作为String
无法控制的其他地方的变量作为变量,则它将是唯一的解决方案。
<fmt:parseNumber var="pagerTotDisp" value="9" /> <fmt:parseNumber var="TotalPages" value="10" />
以上是 在EL表达式中比较数字似乎不起作用 的全部内容, 来源链接: utcz.com/qa/427247.html