1.迭代操作主要包括两个标签:<c: forEach>和<c: forTokens>
2.<c: forEach> 为循环控制,它可以将集合(collection)中的成员循环浏览一遍,运作方式为当条件符合时,就会持续重复执行<c: forEach>的本体内容。
3.语法:
语法1:迭代一集合对象所有成员
<c: forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
本体内容
</c:forEach>
var用来存放现在指到的成员(类型 String 无EL表达式),items指被迭代的集合对象(类型:Arrays,Collection,Iterator,Enumeration,Map,String 有EL表达式),varStatus用来存放现在指到的相关成员信息(类型 String 无EL表达式 ),begin开始的位置(类型 int 有EL表达式),end结束的位置(类型 int 有EL表达式),step每次迭代的间隔数(类型 int 有EL表达式)
语法2:迭代指定的次数
<c: forEach [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
本体内容
</c:forEach>
示例代码如下:
<h4>c:forTokens: 处理字符串的, 类似于 String 的 split() 方法</h4>
<c:set value="a,b,c.d.e.f;g;h;j" var="test" scope="request"></c:set>
<c:forTokens items="${requestScope.test }" delims="." var="s">
${s }<br>
</c:forTokens>
<h4>c:forEach: 可以对数组, Collection, Map 进行遍历, begin(对于集合 begin 从 0 开始算), end, step</h4>
<c:forEach begin="1" end="10" step="3" var="i">
${ i} --
</c:forEach>
<br><br>
<%
List<Customer> custs = new ArrayList<Customer>();
custs.add(new Customer(1, "AAA")); //index: 0
custs.add(new Customer(2, "BBB")); //1
custs.add(new Customer(3, "CCC"));
custs.add(new Customer(4, "DDD")); //3
custs.add(new Customer(5, "EEE"));
custs.add(new Customer(6, "FFF")); //5
request.setAttribute("custs", custs);
%>
<br><br>
<!-- 遍历 Collection, 遍历数组同 Collection -->
<c:forEach items="${requestScope.custs }" var="cust"
varStatus="status">
${status.index}, ${status.count}, ${status.first}, ${status.last}: ${cust.id }: ${cust.name }<br>
</c:forEach>
<!-- 遍历 Map -->
<%
Map<String, Customer> custMap = new HashMap<String, Customer>();
custMap.put("a", new Customer(1, "AAA")); //index: 0
custMap.put("b", new Customer(2, "BBB")); //index: 0
custMap.put("c", new Customer(3, "CCC")); //index: 0
custMap.put("d", new Customer(4, "DDD")); //index: 0
custMap.put("e", new Customer(5, "EEE")); //index: 0
custMap.put("f", new Customer(6, "FFF")); //index: 0
request.setAttribute("custMap", custMap);
%>
<br><br>
<c:forEach items="${requestScope.custMap }" var="cust">
${cust.key } - ${cust.value.id } - ${cust.value.name }<br>
</c:forEach>
<%
String [] names = new String[]{"A", "B", "C"};
request.setAttribute("names", names);
%>
<br><br>
<!-- 遍历 数组 -->
<c:forEach var="name" items="${names }">${name }-</c:forEach>
<br><br>
<!-- 遍历 Enumeration -->
<c:forEach items="${pageContext.session.attributeNames }" var="attrName">
${attrName }-
</c:forEach>
这篇博客介绍了JSTL中的迭代操作,重点讲解了<c:forEach>标签的使用。它用于遍历集合、数组等,提供了控制循环的多种属性,如begin、end和step。通过示例代码,展示了如何迭代集合对象的所有成员以及如何迭代指定次数。
&spm=1001.2101.3001.5002&articleId=78298894&d=1&t=3&u=bfb2109ec9cf4637a156f57b46937446)

被折叠的 条评论
为什么被折叠?



