一、基本语法
<c:forEach items="${list}" var="item"> <td><c:out value="${item.name}"/></td> <td><c:out value="${item.age}"/></td> </c:forEach>
上述语法中,c:forEach是一个JSP标签库中的标签,表示循环遍历给定的集合元素或数组元素。其中,items指定被遍历的集合,var指定当前遍历的元素名,可以在标签体内通过${item.name}的方式获取元素中的属性值。
在上述例子中,我们假设list是一个JavaBean组成的List,其中JavaBean中有name和age两个属性。
二、遍历HashMap
<% HashMap map = new HashMap(); map.put("name1", "value1"); map.put("name2", "value2"); map.put("name3", "value3"); pageContext.setAttribute("map", map); %> <c:forEach var="entry" items="${map}"> Key: ${entry.key}, value: ${entry.value}
</c:forEach>
使用forEach标签遍历HashMap会稍微有点不同,我们需要将HashMap赋值到pageContext域中,然后在标签内部通过${entry.key}、${entry.value}获取键和值。
三、利用varStatus获取遍历状态
<c:forEach var="item" items="${list}" varStatus="status"> <c:if test="${status.first}"> <tr> <td>${status.index} <td>${item.name} <td>${item.age} </tr> </c:if> </c:forEach>
varStatus属性可以获得当前遍历元素的一些统计信息。例如在上面的例子中,我们可以通过status.index获取当前遍历的下标,status.first表示是否是第一个元素,status.last则表示是否是最后一个元素。在标签体内,我们利用这些信息进行一些特定的操作。
四、利用step属性实现步长控制
<% int[] arr = {1,2,3,4,5,6,7,8,9,10}; %> <c:forEach var="i" begin="0" end="9" step="3"> <c:out value="${arr[i]}"/>, <c:out value="${arr[i+1]}"/>, <c:out value="${arr[i+2]}"/>
</c:forEach>
在这个例子中,我们希望控制步长为3,输出arr数组中每三个元素。我们可以使用step属性来控制步长。
五、使用forEach标签进行嵌套循环
<table> <c:forEach items="${departments}" var="department"> <tr> <td><c:out value="${department.name}" /> <td><c:out value="${department.manager}" /> </tr> <c:forEach items="${department.employees}" var="employee"> <tr> <td> <td><c:out value="${employee.name}" /> </tr> </c:forEach> </c:forEach> </table>
在这个例子中,我们的departments是一个List,每个元素都是一个JavaBean,JavaBean中有一个name属性表示部门名称,有一个manager属性表示部门经理名称,还有一个employees属性表示该部门下属员工列表。因此,我们需要使用嵌套的forEach标签进行遍历。外层的forEach标签遍历部门列表,内层的forEach标签遍历每个部门的员工列表。