C:forEach var Status属性

其中

<c:forEachitems="${command.modelList}" var="model"varStatus="abc">
               <tr>
                   <td><c:outvalue="${abc.count}"/></td>
                   <td class="model">
                    <form:checkbox path="select"value="${abc.index}"/>
                       <labelfor="model1">${model.modelName}</label>
                       <p>${model.modelDesc}</p>
                   </td>
                   <td>
                    <form:select path ="modelList[${abc.index}].positionIdx"onchange="selectPoss(this);">
                   <optionvalue="">请选择</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="#"onclick="getModelDetail(${model.modelID});"><imgsrc="<%=request.getContextPath()%>/images/edit.gif"alt="编辑"/></a>
                       <a href="#"onclick="deleteModel(${model.modelID});"><imgsrc="<%=request.getContextPath()%>/images/delete.gif"alt="删除" /></a>
                   </td>
               </tr>
            </c:forEach>


我们常会用c标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行、偶数行差异;最后一行特殊处理等等。先就varStatus属性常用参数总结下:
${status.index}      输出行号,从0开始。
${status.count}      输出行号,从1开始。
${status.current}   当前这次迭代的(集合中的)项
${status.first}  判断当前项是否为集合中的第一项,返回值为true或false
${status.last}   判断当前项是否为集合中的最后一项,返回值为true或false
begin、end、step分别表示:起始序号,结束序号,跳跃步伐。

如:<c:forEach begin='1' end='5' step='2' items='${list}' var='item'>
表示:操作list集合汇中1~5条数据,不是逐条循环,而是按每2个取值。即操作集合中的第1、3、5条数据。
<c:forEach>标签共有六个属性:


迭代步长

关于var的属性:

1、        没有items属性;

<c:forEach var=”item” begin=”1” end=”3”>

        <c:out value=”${item}”/>

</c:forEach>

输出的结果为:1 2 3

2、        Items的值是:数组

<% Integer[] arr={1,2,3};

  request.setAttribute("arr",arr); %>

         <c:forEach items="${arr}" var="arr" >

      <c:out value=”${arr}”/>

         </c:forEach> 

     输出的结果为:1 2 3

3、        Items的值是:字符串

1)简单的字符串

<c:forEach items=”items” var=”item”>

        <c:out value=”${item}”/>

</c:forEach>

输出的结果:items

2)以”,”间隔的字符串,例:song,li,xing

<c:forEach items=”song,li,xing” var=”item”>

        <c:out value=”${item}”/>

</c:forEach>

输出的结果:song li xing

4、        Items的值是:集合

<%

        List list=new ArrayList();

        list.add("song");

        list.add("lixing");

        request.setAttribute("list",list);

       %>

       <c:forEach items="${list}" var="str">

           <c:out value=”${str}”/>

      </c:forEach>

输出结果为:song lixing

总结:迭代输出var储存的值时,应先考虑是否有items属性;没有items属性时,迭代输出的结果为数字(1,2..end);有items属性时,要看类型;1、数组、集合、以”,”间隔的字符串时,迭代输出数组、集合(或以“,“分开的字符串)的元素;2为简单的字符串时,一个元素输出;
 c:forEach的varStatus属性

index当前这次迭代从 0 开始的迭代索引
count当前这次迭代从 1 开始的迭代计数
first用来表明当前这轮迭代是否为第一次迭代的标志
last用来表明当前这轮迭代是否为最后一次迭代的标志
begin属性值
end属性值
step属性值

例:

表格偶数行与奇数行颜色交替效果
引标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<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 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:



特性  Getter  描述
current     getCurrent()    当前这次迭代的(集合中的)项
index   getIndex()  当前这次迭代从 0 开始的迭代索引
count   getCount()  当前这次迭代从 1 开始的迭代计数
first   isFirst()   用来表明当前这轮迭代是否为第一次迭代的标志
last    isLast()    用来表明当前这轮迭代是否为最后一次迭代的标志
begin   getBegin()  begin 属性值
end     getEnd()    end 属性值
step    getStep()   step 属性值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值