java - 如何循环使用JSTL forEach实现自定义结构?

标签 java html for-loop foreach jstl

我的 JSP 中有一个模型属性(这是一个包含名称的列表)。例如我的列表

现在我可以使用 forEach 轻松地遍历 JSP 中的列表

<c:forEach items="${myList}" var = "singleItem" varStatus="status">  
  ${singleItem.name}
</c:forEach>

这很好用。 现在我的要求是我有一个需要显示的结构:

    <div id="top"></div>
      <p>name1</p>
      <p>name2</p>
    <div id="bottom"></div>

    <div id="top"></div>
      <p>name3</p>
      <p>name4</p>
    <div id="bottom"></div>

    <div id="top"></div>
      <p>name5</p>
      <p>name6</p>
    <div id="bottom"></div>

此处 name1、name2 等在 myList 中。那么我该如何运行 forEach 循环才能实现上面显示的输出。 我卡住了。请帮我。 :(

最佳答案

虽然我个人赞成的 Sotirios 答案以及 skaffman 最初提出的答案是解决初始问题的真正聪明的解决方法,但它可能会导致 NPE 或需要事先进行一些检查。

我肯定会采用替代方法或“直接”方式,在必要时应插入所有“额外”标记(在您的情况下为 <div> 标记),例如:

<c:set var="length" value="${fn:length(myList)}"/>
<c:forEach items="${myList}" var = "singleItem" varStatus="status">
    <c:if test="${status.index % 2 == 0}">
        <div class="top"></div>
    </c:if>
    <p>${singleItem.name}</p>
    <c:if test="${(status.index % 2 == 1) or (status.index + 1 == length)}">
        <div class="bottom"></div>
    </c:if>
</c:forEach>

另请注意,您应该替换您的 <div> 的 ID用于样式类以防止 JSP 中出现重复的 ID。

关于java - 如何循环使用JSTL forEach实现自定义结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15731211/

相关文章:

javascript - 在 Google Apps 脚本中返回空值

java - 从列中搜索以获取各种数据的计数

java - 带有多个paramsin java mysql的PreparedStatement问题

javascript - 单击子 div 时如何停止父 href 标签的重定向?

HTML/CSS 定位 ~ 屏幕尺寸/分辨率和浏览器调整大小

javascript - html页面加载在底部

java - 你能在 if-else 语句的条件中使用 for 循环吗?

c++ - Visual C++ - 运行时检查失败 #3 - 变量未初始化

java - ArrayList 中的每个 String[] 都具有相同的值

java - 无法访问 Person 类型的封闭实例