<c:forEach varStatus="status">中 varStatus的屬性簡介

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 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" onchange="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="#" onclick="getModelDetail(${model.modelID});"><img src="<%=request.getContextPath()%>/p_w_picpaths/edit.gif" alt="編輯"/></a>
    <a href="#" onclick="deleteModel(${model.modelID});"><img src="<%=request.getContextPath()%>/p_w_picpaths/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 類的實例。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章