jstl:c:forEach标签的使用
2023.2.28
语法:<c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"> ${name} </c:forEach>
属性参考:
属性 | 作用 |
---|---|
items | 所需要遍历的集合,相当于java中forEach的后半部分 |
var | 另起名,相当于java中forEach的前半部分 |
varStatus | 遍历的相关信息,分别是:索引(index),已经迭代的次数(count),是否为首个(first),是否为尾个(last) |
begin | 表示从第几个索引开始取元素,默认为0 |
end | 表示在第几个索引终止,默认为元素个数-1 |
step | 步进,默认为1,即一个一个的读取 |
用法:比较常见的用法还是遍历一个数组
<c:forEach items="${navModelList}" var="nav">
<div onclick="window.location.href='${pageContext.request.contextPath}'+'${nav.href}'">${nav.navName}</div>
</c:forEach>
这种方式很简单,对应的其实和java中的增强型for循环用法相似
重点是遍历两个数组:
<c:forEach items="${teacherModelList}" var="teacher" begin="0" end="2" varStatus="loop">
<div class="justify-content-center flex-wrap">
<img src="${imageShowModelList[loop.count-1].imageMessage}">
<div>${teacher.teacherName}</div>
<div>${teacher.level}</div>
</div>
</c:forEach>
由于在jstl中c:forEach
将items中的数据作为数组来用,所以可以用到数组的特性:具有索引 进行取值,上述imageShowModelList
是和teacherModelList
的数据一起遍历的,但是后端不方便将两组数据合并,所以直接利用varStatus
获取teacherModelList
遍历的状态,然后再作为imageShowModelList
的下标取得值,因为count是遍历次数,所以在作为下标时需要 -1,当然可以直接使用 index 。