1

我几乎到处都在寻找这个逻辑,但我确信我做得不好,因此提出了这个问题。

我有一个Arraylist,它需要迭代并以以下格式显示

用户 1 用户 2 用户 3
用户 4 用户 5 用户 6 用户 7用户 8 用户
9

我可以使用普通的 JSP scriptlet 但不使用 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>

任何帮助,将不胜感激。

提前致谢

4

1 回答 1

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 开始。

您可以使用运算符来检查是否需要开始或关闭新行。


另一种方法是循环遍历列表,将其输出为无编号列表并使用 CSS 以您想要的方式对其进行样式设置。我就是这样解决它的。您的 CSS 外观示例:

ul.my-class { overflow: hidden; width: 600px; }
ul.my-class li { float: left; width: 200px; }
于 2012-09-23T09:47:25.387 回答