2011-08-23 71 views
3

在JSP中,我想如果我做比較兩個變量在EL表達式比較數字似乎並沒有工作

<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不能夠在相同的條件下??處理兩個變量

感謝

回答

9

你硬編碼的價值value<c:set>屬性。該<c:set>對待硬編碼的值作爲String。EL因此也評估它們作爲String。按字典順序,910更大,因爲9處於比1一個進一步的數值位置。

有兩種方法來解決這個問題:

  1. 經由一個EL表達式設置的值。它將被解釋爲Long而不是String

    <c:set var="pagerTotDisp" value="${9}" /> 
    <c:set var="TotalPages" value="${10}" /> 
    
  2. 或者,使用<fmt:parseNumber>,這將是唯一的解決辦法,如果你有這些作爲String變量來自其他地方,你有沒有控制權。

    <fmt:parseNumber var="pagerTotDisp" value="9" /> 
    <fmt:parseNumber var="TotalPages" value="10" /> 
    
+1

謝謝!有效。您可能想要添加fmt taglib需要添加: <%@ taglib uri =「http://java.sun.com/jsp/jstl/fmt」prefix =「fmt」%> –

4

它把兩個值作爲字符串,並且將它們按字母順序比較。

嘗試

<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>