【问题标题】:How to show a group of 3 elements of a collection using JSTL in JSP?如何在 JSP 中使用 JSTL 显示一组 3 个元素?
【发布时间】:2009-04-02 20:03:07
【问题描述】:

我有一个包含 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 语句,但无法正确生成输出。有什么建议吗?

【问题讨论】:

    标签: jsp jstl


    【解决方案1】:

    我不确定语法,但这应该会有所帮助,使用“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>
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-20
        • 1970-01-01
        • 1970-01-01
        • 2012-12-30
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多