2013-07-08 12 views
1

我想通過jsp上的每個循環迭代集合。我的要求是我想要以相反的順序迭代for循環。請參考下面的代碼以供參考:我正在嘗試爲每個循環以相反的順序進行迭代,但無法成功

工作代碼:從開始到結束迭代工作正常:

<c:forEach items="${field.values}" var="value" varStatus="statusInner"> 
    ${value.value} 
    </c:forEach> 

試圖以相反的順序進行迭代:

<c:forEach items="${field.values}" var="value" begin="${fn:length(field.values)}"end="0" varStatus="statusInner"> 
    ${value.value} 
    </c:forEach> 

任何人都可以請幫我在解決我的問題。 在此先感謝。

回答

1

指定-1的步長,使其減少索引。如果不指定遞減步驟,則索引將在每次迭代中增加。

<c:forEach items="${field.values}" var="value" 
    begin="${fn:length(field.values)" end="0" 
      varStatus="statusInner" step="-1"> 
    ${value} 
    </c:forEach> 
+1

你確定代碼的工作? http://stackoverflow.com/questions/3879248/jstl-cforeach-decremental-number-loop-impossible/3883595 –

+0

試過一樣,但不能工作:( – jACOB

+0

當我試過這段代碼我遇到了以下錯誤:由:javax.el.PropertyNotFoundException:找不到類型爲java.util.LinkedHashSet的屬性'1' – jACOB

3

試試這個(接入反向的迭代,而不是反向):

<c:set var="fieldLength" value="${fn:length(field.values)}"/> 
<c:forEach items="${field.values}" varStatus="status"> 
    ${field.values[fieldLength - status.count]} 
</c:forEach> 
+0

當我試過這段代碼時,我遇到了以下錯誤: 引起:javax.el.PropertyNotFoundException:在類型java.util.LinkedHashSet上找不到屬性'1' – jACOB

+0

是的,因爲LinkedHashSet不能被索引直接訪問。一個解決方案(不是一個好的)會使用.ToArray()作爲散列表,然後遍歷它。 –

相關問題