<c:forEach> 标签可以根据循环条件遍历数组和集合类中的所有或部分数据。例如,在使用 Hibernate 技术访问数据库时,返回的都是数组、java.util.List 和 java.util.Map 对象,它们封装着从数据库中查询得出的数据,这些数据是 JSP 页面需要的。如果在 JSP 页面中使用 Java 代码来循环遍历所有数据,会使页面非常混乱,不易分析和维护。使用 JSTL 的 <c:forEach> 标签循环显示这些数据可以解决 JSP 页面混乱的问题,同时也提高了代码的可维护性。
语法:
<c:forEach items="data" var="name" begin="start" end="finish" step="step" varStatus="statusName">
……标签体
</c:forEach>
<c:forEach> 标签中的属性都是可选项,可以根据需要使用相应的属性。<c:forEach> 标签各属性的详细介绍如表所示。
属性 | 类型 | 描述 | 引用 EL |
---|---|---|---|
items | 数组、集合类、字符串和枚举类型 | 被循环遍历的对象,多用于数组与集合类 | 可以 |
var | String | 循环体的变量,用于存储items指定对象的成员 | 不可以 |
begin | int | 循环的起始位置 | 可以 |
end | int | 循环的终止位置 | 可以 |
step | int | 循环的步长 | 可以 |
varStatus | String | 循环的状态变量 | 不可以 |
在上表的属性中,varStatus 属性又包括下表所示的 4 个当前循环体的状态属性。
属性 | 类型 | 说明 |
---|---|---|
index | int | 当前循环的索引值 |
count | int | 循环总数 |
first | boolean | 是否为第一循环 |
last | boolean | 是否为最后一次循环 |
示例
应用 <c:forEach> 标签遍历一个 java.util.List 集合对象,并将其显示在 JSP 页面中,关键代码如下:
<%@page import="java.util.*"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% List<String>list = new ArrayList<String>(); //添加集合元素 list.add("表达式标签"); list.add("流程控制标签"); list.add("循环标签"); list.add("URL操作"); request.setAttribute("data",list); %> List集合类中包含了JSTL核心标签库的4种标签名。<br> 利用&lt;c:forEach&gt;标签遍历其结果如下: <br> <c:forEach items="${data}" var="tag" varStatus="id"> ${id.count}&nbsp;${tag}<br> </c:forEach>
运行结果如下:
List集合类中包含了JSTL标签库的4种签名。
利用<c:forEach>标签遍历其结果如下:
1 表达式标签
2 流程控制标签
3 循环标签
4 URL操作
典型应用
本示例使用 JSTL 标签中的 <c:forEach> 标签遍历 List 集合中的元素,代码如下:
<body> <% List<String>list = new ArrayList<String>(); //创建List集合对象 list.add("松下问童子"); //添加List中的元素 list.add("言师采药去"); list.add("只在此山中"); list.add("云深不知处"); request.setAttribute("list",list); //将List集合保存到request对象中 %> <table align="center" cellpadding="0" cellspacing="0" border="2" bgcolor="lightblue"> <Tr> <Td><b>遍历List集合的全部元素:</b><br> <c:forEach items="${requestScope.list}" var="keyvalue" varStatus="id"> ${id.index}&nbsp;${keyvalue}<br> </c:forEach> </Td> </Tr> <Tr> <td><b>遍历List中所有的元素输出第一个和最后一句:</b><br> <c:forEach items="${requestScope.list}" var="keyvalue" varStatus="id" begin="0" step="3"> ${id.index}&nbsp;${keyvalue}<br> </c:forEach> </td> </Tr> </table>
运行结果如下:
遍历List集合的全部元素:
0 松下问童子
1 言师采药去
2 旨在从山中
3 云深不知去
遍历List中所有的元素输出第一句和最后一句:
0 松下问童子
3 云深不知去
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/22816.html