在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>
但是如果我这样做
<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。
value
<c:set>
String
9
10
1
有两种解决方法:
Long
<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" />