在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

有两种解决方法:

  1. 通过EL表达式设置值。这将被解释为Long,而不是String

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

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

  1. 或者,使用<fmt:parseNumber>,如果您将其作为String无法控制的其他地方的变量作为变量,则它将是唯一的解决方案。

        <fmt:parseNumber var="pagerTotDisp" value="9" />

<fmt:parseNumber var="TotalPages" value="10" />

以上是 在EL表达式中比较数字似乎不起作用 的全部内容, 来源链接: utcz.com/qa/427247.html

回到顶部