2012-09-22 16 views
1

我已經搜遍了這個邏輯幾乎無處不在,但我確定我沒有做一個偉大的工作,因此這個問題。迭代收集和顯示在html行jstl

我有一個ArrayList,它需要進行迭代,並以下列格式顯示

用戶1用戶2用戶3
用戶4用戶5 User6
User7 User8 USER9

我能夠做到這一點使用正常的JSP腳本但不使用JSTL。我嘗試過使用JSTL,但是它跳過列表中的一些條目。這裏是我的代碼

<tr> 
     <c:forEach var="party" items="${partiesList}"> 
     <c:set var="ctr" value="${ctr+1}" scope="page"/> 
     <c:choose> 
     <c:when test="${ctr le 3}"> 
      <td> 
       <figure> 
        <img src="images/${party.avatarUrl}" onclick="showHide('','${party.screenName}')" class="avaimg" alt="${party.screenName}"> 
        <figcaption><spring:message code="user.${party.screenName}" text="${party.screenName}"/></figcaption> 
       </figure> 
      </td> 
     </c:when> 
     <c:otherwise> 
    </tr> 
    <c:set var="ctr" value="0" scope="page"/> 
    </c:otherwise> 
    </c:choose> 
    </c:forEach> 

任何幫助,將不勝感激。

在此先感謝

+0

找到我的答案在這裏http://stackoverflow.com/questions/7670575/how-to-create-a-div-grid-using-jstl-cforeach –

+0

謝謝你的AVD和ControlPower!抱歉不能,因爲我的名聲很低。 –

回答

0

您可以通過使用varStatus屬性和模運算符(%)做到這一點。

<table> 
    <c:forEach var="party" items="${partiesList}" varStatus="status"> 
    <c:if test="${status.index % 3 == 0}"><tr></c:if> 
    <td>${status.index}</td> 
    <c:if test="${status.index % 3 == 2}"></tr></c:if> 
    </c:forEach> 
</table> 

varStatus將返回一個LoopTagStatus對象,其中index

本輪迭代的索引。如果對底層數組,java.lang.Collection或其他類型的子集執行迭代,則返回的索引對於基礎集合是絕對的。指數是基於0的。

您可以使用modulo運算符來檢查是否需要啓動或關閉新行。


一種不同的方法將只是通過循環列表,輸出爲無編號列表,然後使用CSS樣式它,你想要的方式。我就是這樣解決這個問題的。你的CSS可以怎樣看一個例子:

ul.my-class { overflow: hidden; width: 600px; } 
ul.my-class li { float: left; width: 200px; } 
+0

謝謝你賈斯珀。 –