2014-02-28 91 views
0

我在我的JSP頁面有一個小問題。我試圖通過一系列項目進行循環,並進行比較以確保我所看到的當前值與之前的值不同。代碼如下所示:JSP/JSTL集標籤和循環

<c:set var="previousCustomer" value=""/> 
<c:forEach items="${customerlist}" var="customer" varStatus="i"> 
    <c:choose> 
     <c:when test="${(customer.account) != (previousCustomer)}"> 
     [do some stuff] 
     </c:when>       
     <c:otherwise> 
     [do other stuff] 
     </c:otherwise> 
    </c:choose> 
    <c:set var="previousCustomer" value="${customer.account}"/> 
</c:forEach> 

然而,當我寫出來的價值,previousCustomer總是返回相同的值customerlist.account它被設置爲customerlist.account後。有什麼方法可以檢查循環中的項目的當前值與以前的值嗎?

回答

0

您可以通過使用varStatus屬性和EL括號註釋:

<c:forEach items="${customerlist}" var="customer" varStatus="i"> 
    <c:choose> 
    <c:when test="${not i.first and customerlist[i.index] eq customerlist[i.index - 1]}"> 
     [do some stuff] 
    </c:when>       
    <c:otherwise> 
     [do other stuff] 
    </c:otherwise> 
    </c:choose> 
</c:forEach> 

所以,檢查你是不是做了拳頭迭代(由於沒有以前的對象),使用varStatusfirst屬性:

not i.first 

,然後比較基礎上,varStatusindex財產

customerlist[i.index] eq customerlist[i.index - 1] 

或者,如果您確定列表中有更多項目,則可以使用begin="1"c:forEach跳過列表中的第一項。

+0

這對我有效。謝謝!我很感激。 –