<c:forEach> 计数没有递增
<c:forEach> count is not incrementing
我有一组名单,如下所示
[{"name": "test1"},
{"name": "test2"},
{"name": "test3"},
{"name": "test4"},
{"name": "test5"},
{"name": "test6"},
{"name": "test7"},
{"name": "test8"},
{"name": "test9"},
{"name": "test10"},
{"name": "test11"},
{"name": "test12"},
{"name": "test13"}]
我想要实现的是类似于 for 循环的东西,如下所示,但在 jstl 中,它在每次迭代中打印四个值
for(int i=0; i<items.size();i++)
{
System.out.println(items[i].name);
System.out.println(items[i++].name);
System.out.println(items[i++].name);
System.out.println(items[i++].name);
}
我的 jstl 代码如下所示,代码有效但增量在 <c:forEach>
中不起作用
<c:forEach var="value" items="${items}" varStatus="loopCounter">
<div class="one">{value}</div>
${loopCounter+1}
<div class="two">{value}</div>
${loopCounter+1}
<div class="three">{value}</div>
${loopCounter+1}
<div class="four">{value}</div>
</c:forEach>
谁能告诉我一些解决方案
我的预期输出是这样的
迭代一
<div class="one">test1</div>
<div class="two">test2</div>
<div class="three">test3</div>
<div class="four">test4</div>
迭代二
<div class="one">test5</div>
<div class="two">test6</div>
<div class="three">test7</div>
<div class="four">test8</div>
迭代三
<div class="one">test9</div>
<div class="two">test10</div>
<div class="three">test11</div>
<div class="four">test12</div>
迭代四
<div class="one">test13</div>
变量loopCounter
(您的c:forEach 标记的varStatus)是一个包含多个属性的对象。其中之一是 index
(本轮迭代的从零开始的索引)。您可以使用它来计算所需的 css class。
如果要在 JSP 中打印变量,请使用:
${value}
没有
{value}
这应该会给出您想要的输出:
<c:forEach var="value" items="${items}" varStatus="loopCounter">
<c:set var="cssClass">
<c:choose>
<c:when test="(loopCounter.index % 4) eq 0">
one
</c:when>
<c:when test="(loopCounter.index % 4) eq 1">
two
</c:when>
<c:when test="(loopCounter.index % 4) eq 2">
three
</c:when>
<c:otherwise>
four
</c:otherwise>
</c:choose>
</c:set>
<div class="${cssClass}">${value}</div>
</c:forEach>
我有一组名单,如下所示
[{"name": "test1"},
{"name": "test2"},
{"name": "test3"},
{"name": "test4"},
{"name": "test5"},
{"name": "test6"},
{"name": "test7"},
{"name": "test8"},
{"name": "test9"},
{"name": "test10"},
{"name": "test11"},
{"name": "test12"},
{"name": "test13"}]
我想要实现的是类似于 for 循环的东西,如下所示,但在 jstl 中,它在每次迭代中打印四个值
for(int i=0; i<items.size();i++)
{
System.out.println(items[i].name);
System.out.println(items[i++].name);
System.out.println(items[i++].name);
System.out.println(items[i++].name);
}
我的 jstl 代码如下所示,代码有效但增量在 <c:forEach>
<c:forEach var="value" items="${items}" varStatus="loopCounter">
<div class="one">{value}</div>
${loopCounter+1}
<div class="two">{value}</div>
${loopCounter+1}
<div class="three">{value}</div>
${loopCounter+1}
<div class="four">{value}</div>
</c:forEach>
谁能告诉我一些解决方案
我的预期输出是这样的
迭代一
<div class="one">test1</div>
<div class="two">test2</div>
<div class="three">test3</div>
<div class="four">test4</div>
迭代二
<div class="one">test5</div>
<div class="two">test6</div>
<div class="three">test7</div>
<div class="four">test8</div>
迭代三
<div class="one">test9</div>
<div class="two">test10</div>
<div class="three">test11</div>
<div class="four">test12</div>
迭代四
<div class="one">test13</div>
变量loopCounter
(您的c:forEach 标记的varStatus)是一个包含多个属性的对象。其中之一是 index
(本轮迭代的从零开始的索引)。您可以使用它来计算所需的 css class。
如果要在 JSP 中打印变量,请使用:
${value}
没有
{value}
这应该会给出您想要的输出:
<c:forEach var="value" items="${items}" varStatus="loopCounter">
<c:set var="cssClass">
<c:choose>
<c:when test="(loopCounter.index % 4) eq 0">
one
</c:when>
<c:when test="(loopCounter.index % 4) eq 1">
two
</c:when>
<c:when test="(loopCounter.index % 4) eq 2">
three
</c:when>
<c:otherwise>
four
</c:otherwise>
</c:choose>
</c:set>
<div class="${cssClass}">${value}</div>
</c:forEach>