我想为每一行替换行颜色,我知道如何在forEach循环中使用varStatus替换行颜色。但是现在,我有一个嵌套循环。
<c:forEach var="aPermission" items="${Permissions}" varStatus="loop1">
<c:forEach var="anIpRange" items="${aPermission.ipRanges}" varStatus="loop2">
<tr class="${loop2.index % 2 == 0 ? 'row0' : 'row1'}"> [...]
</c:forEach>
</c:forEach>
上面的代码只使用'loop2'varStatus,并且只是一个近似值。如何解决问题?我要介绍我的计数变量还是有更好的方法?
答案 0 :(得分:5)
只需使用专用计数器:
<c:set var="counter" value="${0}"/>
<c:forEach var="aPermission" items="${Permissions}" varStatus="loop1">
<c:forEach var="anIpRange" items="${aPermission.ipRanges}" varStatus="loop2">
<tr class="${counter % 2 == 0 ? 'row0' : 'row1'}"> [...] </tr>
<c:set var="counter" value="${counter + 1}"/>
</c:forEach>
</c:forEach>
答案 1 :(得分:2)
<c:set>
)。您可以通过计算currentSum = currentSum + fn:length(aPermission.ipRanges)
在外部循环中执行此操作。在内循环之后执行此操作currentSum + loop2.index
检查每行的颜色。答案 2 :(得分:1)
有1行方式。
<强> UPD 即可。我第一次弄错了。有没有冗余变量的正确解决方案。
<tr class="${(loop2.index*fn:length(aPermission.ipRanges) + loop1.index) % 2 == 0 ? 'row0' : 'row1'}">