Jsp 在EL表达式中比较数字似乎不起作用

Jsp 在EL表达式中比较数字似乎不起作用,jsp,if-statement,jstl,el,Jsp,If Statement,Jstl,El,在JSP中,我想比较两个变量 如果我这样做: <c:set var="pagerTotDisp" value="9"/> <c:if test="${pagerTotDisp > 8}"> <span>pagerTotDisp above 8</span> </c:if> PagerToDisp高于8 它按预期显示“PagerToDisp高于8” <c:set var="TotalPages" value="10"

在JSP中,我想比较两个变量

如果我这样做:

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

PagerToDisp高于8
它按预期显示“PagerToDisp高于8”

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

总页数超过2页
它按预期显示“PagerToDisp高于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是否不能在同一条件下处理两个变量


谢谢

您正在对
属性中的值进行硬编码。
将硬编码值视为
字符串
。因此,EL也将其评估为
字符串
。从词典学上看,
9
大于
10
,因为
9
1
处于更高的数字位置

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

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

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

  • 它将这两个值视为字符串,并按字典顺序进行比较

    试一试

    
    这种情况是不正确的。不应显示此文本
    
    谢谢!成功了。您可能希望添加需要添加的fmt标记库:
    <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>