前天想要完成一个功能,要求是:将从数据库中获取到的批量数据放入到List集合中,然后传送到jsp页面。jsp页面将数据以表格的形式显示在页面上,表格要求是每显示五条数据进行换行。
博主使用了JSTL标签库中<c:forEach></c:forEach>标签以及<c:if></c:if>
首先先了解一下这俩个标签
- <c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] begin="begin" [end="end"] step="step"></c:forEach>:
它的参数有很多:
- var:迭代的参数的名称,在迭代体中可以使用,用来表示每一个迭代变量,类型为String 如var="item"
- items:要进行迭代的集合,他所支持的类型包含map,iterator,list,collection,Enumeration,数组等。
- begin:如果指定了items,那么就从item[begin]开始迭代,如果没有指定items就从begin开始迭代,类型为整数
- end:如果指定了items,那么就从item[end]迭代结束,如果没有指定items就从end结束,类型为整数
- step:迭代的步长
- varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息:它的属性含义如下
current:当前这次迭代的项
index:当前这次迭代 从0开始的迭代索引
count:当前这次迭代 从1开始的迭代技术
first:用来表明当前这轮迭代是否为第一次迭代的标志。
last:用来表明当前这轮迭代是否为最后一次迭代的标志。
begin:begin属性值
end:end属性值
step:step属性值
2.<c:if test=""></c;if>:这个标签很简单就是进行判断。test中的内容为条件
有了上面的准备,下面直接代码:
<table class="download-content">
<tbody>
<c:forEach var="li" items="${content}" varStatus="num">
<c:if test="${num.count eq 1 || (num.count-1)%5 eq 0 }">
<tr>
</c:if>
<td><a href="${li.src}">${li.name}</a></td>
<c:if test="${num.count % 5 eq 0 || num.count eq 5 }">
</tr>
</c:if>
</c:forEach>
<tr>
<td colspan="5" id="showMuch"><a href="#">查看更多+</a></td>
</tr>
</tbody>
</table>
通过${content} 获得要遍历的集合,然后通过if标签进行判断。这样就实现了每行5个数据的显示。