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