2012-08-28 70 views
1

是否可以重新分配循環索引中間循環,以跳過迭代?是否有可能在JSTL forEach循環中重新分配循環索引?

玩具例如,要打印的數字1,2,3,4,5,8,9,10的列表:

<ul> 
<c:forEach var="counter" begin="${1}" end="${10}"> 
    <li>${counter}</li> 
    <c:if test="${counter eq 5}"> 
     <c:set var="counter" value="${counter+2}" /> <!-- skip two iterations --> 
    </c:if> 
</c:forEach> 
</ul> 

這個例子不起作用。有沒有辦法讓它工作?

我不是說這是一個好主意,我只想知道它是否可能。

+1

什麼是您的實際使用情況?這聽起來像你在錯誤的地方工作。 –

+0

並非所有問題都有背後的實際動機。 :] 我只是想知道。 – mwcz

回答

1

編號

根據具體的功能要求,您需要以不同的方式解決。例如,只有在條件真正匹配時纔打印迭代項目。

<c:forEach var="counter" begin="${1}" end="${10}"> 
    <c:if test="${counter lt 6 or counter gt 7}"> 
     <li>${counter}</li> 
    </c:if> 
</c:forEach> 
+0

謝謝,我很瞭解更多正確的方法來實現相同的結果。你能否詳細說明爲什麼'counter'變量不可訪問? – mwcz

+1

因爲它在每次迭代期間都被設置/覆蓋。這就是''的工作原理。另見它的源代碼。 – BalusC

+0

不錯,我甚至不知道它是開源的。這次進入JSTL的行程有些出乎意料。謝謝(你的)信息! – mwcz