1. 程式人生 > >JSTL核心標籤庫中c:forEach 的 varStatus屬性

JSTL核心標籤庫中c:forEach 的 varStatus屬性

我們常使用<c:forEach>標籤來遍歷需要的資料,為了方便使用,varStatus屬性可以方便我們實現一些與行數相關的功能,如:奇數行、偶數行差異;最後一行特殊處理等等。varStatus屬性常用引數如下:

current:當前這次迭代的(集合中的)項
index:當前這次迭代從 0 開始的迭代計數
count:當前這次迭代從 1 開始的迭代計數
first:用來表明當前這輪迭代是否為第一次迭代的標誌,返回true/false
last:用來表明當前這輪迭代是否為最後一次迭代的標誌,返回true/false

 示例:程式碼段1:

  1. <spanstyle="font-size:18px;"
    ><spanstyle="font-size:14px;"><!-- jstl核心標籤庫中的標籤c:forEach -->
  2.             <c:forEachitems="${list}"var="s"varStatus="abc">
  3.                 <divid="div1">
  4.                     ${abc.current}    
  5.                     <ul>
  6.                         <li>學號:${s.id}</li
    >
  7.                         <li>姓名:${s.name}</li>
  8.                         <li>年齡:${s.age}</li>
  9.                         <li>性別:${s.sex}</li>
  10.                     </ul>
  11.                 </div>
  12.             </c:forEach></span>
  1. <spanstyle="font-size:18px;"
    ></span></span>

在另一頁面中設定了傳遞的引數list為request.setAttribute("list", students);

其中students為ArrayList<Students>型別,students中包含了5組資料,格式如下所示,id分別為1~5. 

 程式碼段2:

  1. <spanstyle="font-size:18px;"><studentid="1">
  2.         <name>李一X</name>
  3.         <sex></sex>
  4.         <age>20</age>
  5.     </student></span>

1)當代碼段1中為${abc.current}時,顯示介面為(注意最上面一行變化,後面類同):


2)當代碼段1中為${abc.index}時,顯示介面為(注意最上面一行變化,後面類同):


3)當代碼段1中為${abc.count}時,顯示介面為(注意最上面一行變化,後面類同):


4)當代碼段1中為${abc.first}時,顯示介面為(注意最上面一行變化,後面類同):


5)當代碼段1中為${abc.last}時,顯示介面為(注意最上面一行變化,後面類同):


另外可以結合<c:forEach>標籤的begin、end、step屬性控制輸出,其分別表示:起始序號,結束序號,跳躍步伐。

如將示例程式碼段1改為:
  1. <c:forEachitems="${list}"var="s"begin='0'end='4'step='2'varStatus="abc">
  2.                 <divid="div1">
  3.                     ${abc.count}    
  4.                     <ul>
  5.                         <li>學號:${s.id}</li>
  6.                         <li>姓名:${s.name}</li>
  7.                         <li>年齡:${s.age}</li>
  8.                         <li>性別:${s.sex}</li>
  9.                     </ul>
  10.                 </div>
  11.             </c:forEach>
結果如下:
說明:操作list集合共有5條資料,step="2"表明不是逐條迴圈,而是按步長為2取值。即操作集合中的第1、3、5條資料(見學號),此處不要和左上角varStatus屬性(取值count)的輸出混淆.