如何将以下for
循环转换为jstl
foreach
:
for(int i = 0 ; i<=21; i+=3){
// print foo
}
这是我到目前为止所拥有的:
<c:forEach varStatus="loop" begin="0" end="21">
// display foo
</c:forEach>
根据 jstl,您应该尝试:
<c:forEach begin="0" end="21" step="3" varStatus="loop">
<c:out value="${loop.count}"/>
</c:forEach>
您可以使用 jstl 步骤属性
<c:forEach varStatus="loop" begin="0" end="21" step="3">
// display foo
</c:forEach>
`<c:forEach
items="<object>"
begin="<int>"
end="<int>"
step="<int>"
var="<string>"
varStatus="<string>">
</c:forEach>`
items -- 要在循环中迭代的项目集合
begin -- 迭代的开始索引。迭代从该属性值中提到的值开始。(如果指定了项目)第一个项目的索引为 0。在您的情况下 begin="0"
end -- 迭代的结束索引。迭代在此属性值(包括)中提到的值处停止。(如果指定了项目)。在您的情况下,begin="49"。
step - 此属性中指定的迭代的步长值。在您的情况下 step="3"。
var -- 在迭代中保存当前项的作用域变量的名称。此变量的类型取决于迭代中的项目并具有嵌套可见性。
varStatus -- 保存当前迭代循环状态的作用域变量的名称。此变量的类型为 javax.servlet.jsp.jstl.core.LoopTagStatus 并具有嵌套可见性。
增加 3 --> step="3"
在 49 上结束循环 --> end="49"
此外,如果您想使用该值本身,您可以使用 'current' 属性。
<c:forEach begin="0" end="2" varStatus="position">
${position.current}
</c:forEach>
这将给出:
0 1 2
当您使用从零开始的数组时,这很有用。