JSTL核心標簽庫中c:forEach 的 varStatus屬性
varStatus屬性 類型:String 描述:循環的狀態信息,可以取值index\count\first\last\current 不可以使用EL表達式
我們常使用<c:forEach>標簽來遍歷需要的數據,為了方便使用,varStatus屬性可以方便我們實現一些與行數相關的功能,如:奇數行、偶數行差異;最後一行特殊處理等等。varStatus屬性常用參數如下:
current:當前這次叠代的(集合中的)項index:當前這次叠代從 0 開始的叠代計數
count:當前這次叠代從 1 開始的叠代計數
first:用來表明當前這輪叠代是否為第一次叠代的標誌,返回true/false
last:用來表明當前這輪叠代是否為最後一次叠代的標誌,返回true/false
示例:代碼段1:
<span style="font-size:18px;"><span style="font-size:14px;"><!-- jstl核心標簽庫中的標簽c:forEach --> <c:forEach items="${list}" var="s" varStatus="abc"> <div id="div1"> ${abc.current} <ul> <li>學號:${s.id}</li> <li>姓名:${s.name}</li> <li>年齡:${s.age}</li> <li>性別:${s.sex}</li> </ul> </div> </c:forEach></span>
<span style="font-size:18px;"></span></span>
在另一頁面中設置了傳遞的參數list為request.setAttribute("list", students);
其中students為ArrayList<Students>類型,students中包含了5組數據,格式如下所示,id分別為1~5.
代碼段2:
<span style="font-size:18px;"> <student id="1"> <name>李一X</name> <sex>男</sex> <age>20</age> </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改為:<c:forEach items="${list}" var="s" begin='0' end='4' step='2' varStatus="abc"> <div id="div1"> ${abc.count} <ul> <li>學號:${s.id}</li> <li>姓名:${s.name}</li> <li>年齡:${s.age}</li> <li>性別:${s.sex}</li> </ul> </div> </c:forEach>結果如下:

說明:操作list集合共有5條數據,step="2"表明不是逐條循環,而是按步長為2取值。即操作集合中的第1、3、5條數據(見學號),此處不要和左上角varStatus屬性(取值count)的輸出混淆.
Tags: current 表達式 false style count
文章來源: