jstl forEach循环 - 访问数组

时间:2016-10-06 14:10:23

标签: jsp loops foreach jstl

我将尝试简化我的示例,以便于理解问题。

我循环遍历一个父数组的数组。我希望能够在循环子数组时识别父数组元素发生变化的点。

让我们说父数组是$ {bets},子数组是$ {tips}。我有3个投注,每个投注由3个提示组成。我希望能够识别循环中$ {bet.id}更改的点。

我可以使用$ {tip.bet.id}从tip元素访问$ {bet.id}

代码如下所示:

<c:forEach var="tip" items="${sortedTips}" varStatus="loop">
  tip ${loop.index} - ${tip.bet.id}
</c:forEach>

输出如下:

  • tip 1 - 518
  • tip 2 - 518
  • tip 3 - 518
  • tip 4 - 519
  • tip 5 - 519
  • 提示6 - 519
  • tip 7 - 520
  • tip 8 - 520
  • tip 9 - 520

我希望能够在每个新$ {bet.id}之间添加内容,所以我想实现以下目标:

  • tip 1 - 518
  • tip 2 - 518
  • tip 3 - 518
  • 其他内容
  • tip 4 - 519
  • tip 5 - 519
  • 提示6 - 519
  • 其他内容
  • tip 7 - 520
  • tip 8 - 520
  • tip 9 - 520
  • 其他内容

如果有帮助,我已经找到了一种方法,可以在每次下注的顶部做到这一点:

<c:set var="lastBetId" value="" />
<c:forEach var="tip" items="${sortedTips}" varStatus="loop">

  <c:if test="${tip.bet.id != lastBetId}">
    Additional Piece of content <br />
  </c:if>
  <c:set var="lastBetId" value="${tip.bet.id}" />

  tip ${loop.index} - ${tip.bet.id}
</c:forEach>

结果是:

  • 其他内容
  • tip 1 - 518
  • tip 2 - 518
  • tip 3 - 518
  • 其他内容
  • tip 4 - 519
  • tip 5 - 519
  • 提示6 - 519
  • 其他内容
  • tip 7 - 520
  • tip 8 - 520
  • tip 9 - 520

但我无法弄清楚如何在每次下注的底部插入此内容。

2 个答案:

答案 0 :(得分:0)

你需要内循环,就像这样

<c:set var="num" value="1" />
<c:forEach var="bet" items="${bets}" varStatus="loop">
   <c:forEach var="tip" items="${bet}" varStatus="loopInner">
      tip <c:out value="${num}" /> - ${tip.id}
      <c:set var="num" value="${num + 1}"/>
   </c:forEach>
   <!-- This is the place for additional content -->
</c:forEach>

答案 1 :(得分:0)

您是否尝试过添加此行

<c:if test="${tip.bet.id != lastBetId}">
Additional Piece of content <br />

以下

tip ${loop.index} - ${tip.bet.id}

并删除

<c:set var="lastBetId" value="" />

看起来像这样

<c:forEach var="tip" items="${sortedTips}" varStatus="loop">

tip ${loop.index} - ${tip.bet.id}
<c:set var="lastBetId" value="${tip.bet.id}" />
<c:if test="${tip.bet.id != lastBetId}">
Additional Piece of content <br />
</c:if>


</c:forEach>