2

我有一个包含 n 个元素的列表,我想在一组 3 中输出。集合的大小可以变化很大,但输出必须分组为 3。

<ul>
   <li>
      <div>element 1</div>
      <div>element 2</div>
      <div>element 3</div>
   </li>

   <li>
      <div>element 4</div>
      <div>element 5</div>
      <div>element 6</div>
   </li>

   <li>
      <div>element 7</div>
      <div>element 8</div>
   </li>
 </ul>

我想使用 forEach 和 if 语句,但我无法正确生成输出。有什么建议么?

4

2 回答 2

2

我不确定语法,但这应该会有所帮助,使用“varStatus”的“count”属性来了解您所在的元素编号......

编辑:显然“.count”不是零索引,所以正确的代码是:

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

...
<c:set var="myListSize" value="${fn:length(myList)}"/>

        <c:forEach var="element" items="${myList}" varStatus="stat">

            <c:choose>

                <c:when test="${ stat.count == 1 }">
                   <ul>
                   <li>
                      <div>${element}</div>
                </c:when>

                <c:when test="${ stat.count == myListSize }">
                      <div>${element}</div>
                   </li>
                   </ul>
                </c:when>

                <c:when test="${stat.count % 3 == 0 && stat.count < myListSize }">
                      <div>${element}</div>
                   </li>
                   <br/>
                   <li>
                </c:when>

                <c:otherwise>
                      <div>${element}</div>
                </c:otherwise>

            </c:choose>

        </c:forEach>

它仍然可以改进,但现在它可以工作。

于 2009-04-02T20:58:10.637 回答
0

这可能不是最佳的,但是只在 Java scriptlet 中执行一次,创建 3 组,将它们添加到 bean,然后使用 2 个嵌套的 foreach 循环遍历这些怎么样。

于 2009-04-02T20:34:55.233 回答