本文共 3248 字,大约阅读时间需要 10 分钟。
我们常会用c标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行、偶数行差异;最后一行特殊处理等等。先就varStatus属性常用参数总结下:c:forEach varStatus属性
current当前这次迭代的(集合中的)项
index当前这次迭代从 0 开始的迭代索引 count当前这次迭代从 1 开始的迭代计数 first用来表明当前这轮迭代是否为第一次迭代的标志 last用来表明当前这轮迭代是否为最后一次迭代的标志 begin属性值 end属性值 step属性值
写个最近使用过的小例子:
<c:forEach items="${command.modelList}" var="model" varStatus="abc">
<tr> <td><c:out value="${abc.count}"/></td> <td class="model"> <form:checkbox path="select" value="${abc.index}"/> <label for="model1">${model.modelName}</label> <p>${model.modelDesc}</p> </td> <td> <form:select path = "modelList[${abc.index}].positionIdx" οnchange="selectPoss(this);"> <option value="">请选择</option> <form:option value="A" label="位置A"/> <form:option value="B" label="位置B"/> <form:option value="C" label="位置C"/> <form:option value="D" label="位置D"/> <form:option value="E" label="位置E"/> <form:option value="F" label="位置F"/> </form:select> </td> <td> <a href="#" οnclick="getModelDetail(${model.modelID});"><img src="<%=request.getContextPath()%>/images/edit.gif" alt="编辑"/></a> <a href="#" οnclick="deleteModel(${model.modelID});"><img src="<%=request.getContextPath()%>/images/delete.gif" alt="删除" /></a> </td> </tr> </c:forEach>
c:forEach varStatus属性
index当前这次迭代从 0 开始的迭代索引
count当前这次迭代从 1 开始的迭代计数 first用来表明当前这轮迭代是否为第一次迭代的标志 last用来表明当前这轮迭代是否为最后一次迭代的标志 begin属性值 end属性值 step属性值例:
表格偶数行与奇数行颜色交替效果
<c:forEach items="${queryPromotionList}" var="vPromotion" varStatus="vstatus"> <c:choose> <c:when test="${vstatus.index%2==0}"> <tr bgcolor="#FFFFFF" height="40"> </c:when> <c:otherwise> <tr bgcolor="#F3F3F5" height="40"> </c:otherwise> </c:choose><table class=table_body_bg cellspacing=1 cellpadding=1
width="100%" align=center border=0> <c:forEach items="${list}" var="a" varStatus="vs"><c:if test="${vs.count%5==1}">
<tr align="left" height="20"> </c:if> <td class=table_body_td width="20%"><a href="/aam/degree/advisorAnswer.do?sfid=${a.sfid }">${a.xm }(${a.sfid })</a></td> <c:set var="count" value="${vs.count}"/> //${vs.count}只在<c:forEach></c:forEach>的范围内有值 外部引用需要把值传出去 </c:forEach> <c:if test="${count%5==1}"> <td class="table_body_td" width="20%"></td> <td class="table_body_td" width="20%"></td> <td class="table_body_td" width="20%"></td> <td class="table_body_td" width="20%"></td> </tr> </c:if> <c:if test="${count%5==2}"> <td class="table_body_td" width="20%"></td> <td class="table_body_td" width="20%"></td> <td class="table_body_td" width="20%"></td> </tr> </c:if> <c:if test="${count%5==3}"> <td class="table_body_td" width="20%"></td> <td class="table_body_td" width="20%"></td> </tr> </c:if> <c:if test="${count%5==4}"> <td class="table_body_td" width="20%"></td> </tr> </c:if><c:if test="${count%5==0}">
</tr> </c:if> </table> 不论是对整数还是对集合进行迭代, <c:forEach> 剩余的属性 varStatus 所起的作用相同。和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。转载地址:http://oqtci.baihongyu.com/