我有一个名单列表,如下所示
[{"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>
任何人都可以告诉我一些解决方案吗
我的预期输出就像thsi
迭代一
<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>
答案 0 :(得分:2)
变量loopCounter
(c:forEach标记的varStatus)是一个包含多个属性的对象。其中之一是index
(当前迭代循环的从零开始的索引)。您可以使用它来计算所需的css类。
如果要在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>