如何动态更改 c:forEarch 结束值

How to change c:forEarch end value dynamically

我的 jsp 文件中有一个 c:forEach 循环,我在其中使用开始和结束属性将循环限制为某个固定计数。

假设我有横幅列表(比如 5 个),但我只想显示前 3 个横幅,然后我可以像这样使用开始和结束

count = 3

<c:forEach items="${banners}" var="banner" varStatus="status" begin="0" end="${count}">
  <c:choose>
    <c:when test="${ycommerce:evaluateRestrictions(banner)}">
       <!-- code here -->
    </c:when>
    <c:otherwise>
       <c:set var="count" value="${count+1}" />
    </c:otherwise>          
</c:forEach>

在上面的代码中,如果横幅 1 有限制,那么我会尝试将计数值加一 (+1),以便 end 将动态增加到一。

但它不起作用。虽然计数在增加,但 for 循环没有反映。

我也尝试使用 scope 属性,但没有任何反应

<c:set var="count" value="${count+1}" scope="page" />

请帮我给出一些解决方案,以便循环结束值动态变化。

如果不可能,请给我一些其他选择。

${count} 在循环开始时计算,因此在循环期间更改 count 的值将无效。

另请注意,与通常的 Java 不同,end 包含在内,因此如果您想要 3 次迭代,请使用 start="0" end="2".

如果要同时过滤和限制,则不能使用begin/end。相反,在循环中自己做:

<c:set var="count" value="[=10=]" />
<c:forEach items="${banners}" var="banner" varStatus="status">
   <c:if test="${count lt 3 and ycommerce:evaluateRestrictions(banner)}">
       <c:set var="count" value="${count+1}" />
       <!-- code here -->
   </c:if>          
</c:forEach>