如何动态更改 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>
我的 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>