我有一个后台servlet过来的集合,不是某一个具体对象的,而且还是一个双重循环。
<% List list = (List) request.getParameter("list");
所以在JSP页面就不能再这样了
for(int i=0;i<list.size();i++)
因为.size()是不能用的。
用JSTL标签
c:forEach标签的items属性支持Java平台所提供的所有标准集合类型。
varStatus用于创建限定了作用域的变量(该变量只在当前标签体内起作用)。不过,由varStatus属性命名的变量并不存储当前索引值或当前元素,而是赋予javax.servlet.jsp.jstl.core.LoopTagStatus类的实例。
current:当前这次迭代的(集合中的)项。
index:当前这次迭代从0开始的迭代索引。
count:当前这次迭代从1开始的迭代计数。
first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型。
last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型。
begin:begin属性的值。
step:step属性的值
先导入标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
我想要遍历出我想要的值,所以用<c:if>条件 <c:if/>
进行判断
<table>
<tr>
<td>学生学号</td>
<td>学生姓名</td>
<td>学生班级</td>
<td>分数</td>
</tr>
<c:forEach items="${requestScope.OneScoreList}" var="row" varStatus = "f1"> //OneScoreList是后台setAttribute("OneScoreList",list)的值
<tr>
<c:forEach items="${row}" var="item" varStatus="f2" begin="0">
<c:if test="${f2.index==0 }">
<td><c:out value="${item}" /></td>
<c:set var="stuid" value="${item}" />
</c:if>
<c:if test="${f2.index==1 }">
<td><c:out value="${item}" /></td>
</c:if>
<c:if test="${f2.index==2 }">
<td><c:out value="${item}" /></td>
</c:if>
<c:if test="${f2.index==7 }">
<td><c:out value="${item}" /></td>
</c:if>
</c:forEach>
</tr>
</c:forEach>
</table>