Jsp基礎之jstl 循環標簽


 JSTL所支持的迭代標簽有兩個,分別是<c:forEach>和<c:forTokens>

  <c:forEach>標簽的作用就是迭代輸出標簽內部的內容。它既可以進行固定次數的迭代輸出,也可以依據集合中對象的個數來決定迭代的次數。

         <c:forEach>標簽,需要與el表達式聯合使用

         <c:forEach>標簽的語法定義如下所示。

 <c:forEach>標簽用到的參數含義:

  <c:forEach var="每個變量名字" items="要迭代的list"  varStatus="每個對象的狀態" begin="循環從哪兒開始" end="循環到哪兒結束" step="循環的步長">
         循環要輸出的content
   </c:forEach>

參數對應的屬性:
  var: 迭代的變量。
items: 迭代的集合。
varStatus: 迭代的狀態。可以訪問迭代自身的信息。
begin: 迭代從items[begin]開始。
end: 迭代以items[end]結束。
step: 迭代的步長

 <c:forEach>標簽的items屬性支持Java平台所提供的所有標准集合類型。此外,您可以使用該操作來迭代數組(包括基本類型數組)中的元素。它所支持的集合類型以及迭代的元素如下所示:

   java.util.Collection:調用iterator()來獲得的元素。 

  java.util.Map:通過java.util.Map.Entry所獲得的實例。 

  java.util.Iterator:迭代器元素。 

java.util.Enumeration:枚舉元素。 

Object實例數組:數組元素。 

基本類型值數組:經過包裝的數組元素。 

用逗號定界的String:分割后的子字符串。 

javax.servlet.jsp.jstl.sql.Result:SQL查詢所獲得的行。


不論是對整數還是對集合進行迭代,<c:forEach>的varStatus屬性所起的作用相同。和var屬性一樣,varStatus用於創建限定了作用域的變量(改變量只在當前標簽體內起作用)。不過,由varStatus屬性命名的變量並不存儲當前索引值或當前元素,而是賦予javax.servlet.jsp.jstl.core.LoopTagStatus類的實例。該類包含了一系列的特性,它們描述了迭代的當前狀態,如下這些屬性的含義如下所示:

  current:當前這次迭代的(集合中的)項。 

index:當前這次迭代從0開始的迭代索引。 

  count:當前這次迭代從1開始的迭代計數。 

  first:用來表明當前這輪迭代是否為第一次迭代,該屬性為boolean類型。

  last:用來表明當前這輪迭代是否為最后一次迭代,該屬性為boolean類型。 

  begin:begin屬性的值。 

  end:end屬性的值 

  step:step屬性的值 
例子:
  <c:forEach var="item" items="list" varStatus="status">
         ${status.count}(當前迭代的次數) ---- ${item}(輸出的元素值) 
  </c:forEach> 
項目中的使用:

  1         <c:forEach var="f" items="${requestScope.interfaces}" varStatus="status"> 
  2             <div style="height:20px;"></div>
  3             <div style="padding:20px;padding-top:10px;background:#f6f6f6; margin-top:20px;font-size:14px;color:#999;">
  4             <div style="margin-left:-10px;font-size:18px;font-weight:bold;color:#407aaa;">${ status.index + 1}、 ${f.model.interfaceName}</div>
  5             <h3>${status.count}.1 功能說明</h3>
  6             ${f.model.remark}
  7             <br/>
  8             <h3>${status.count}.2 URL地址</h3>
  9             ${f.model.moduleUrl}${f.model.url}
 10             <br/>
 11             <br/>
 12             <h3>${status.count}.3 版本號</h3>
 13             ${f.model.version}
 14             <br/>
 15             <br/>
 16             <h3>${status.count}.4 Mock地址</h3>
 17             正確:${f.trueMockUrl}<br/>
 18             錯誤:${f.falseMockUrl}
 19             <br/>
 20             <br/>
 21             
 22             <h3>${status.count}.5 HTTP請求方式</h3>
 23             ${f.model.method}
 24             <br/>
 25             <br/>
 26             <h3>${status.count}.6 請求頭說明</h3>
 27             <table style="width:100%;">
 28                 <tr style="background:#407aaa;color:#fff;">
 29                     <td>名稱</td>
 30                     <td>是否必須</td>
 31                     <td>類型</td>
 32                     <td>默認值</td>
 33                     <td style="width:260px;">備注</td>
 34                 </tr>
 35                 <c:forEach var="v" items="${f.headers}"> 
 36                 <tr>
 37                     <td>${v.name}</td>
 38                     <td>${v.necessary}</td>
 39                     <td>${v.type}</td>
 40                     <td>${v.def}</td>
 41                     <td>${v.remark}</td>
 42                 </tr>
 43                 </c:forEach>
 44             </table>
 45             <br/>
 46             <h3>${status.count}.7 輸入參數說明<c:if test="${f.customParams!=null}">(自定義參數)</c:if></h3>
 47                 <c:if test="${f.formParams!=null}">
 48                     <table style="width:100%;">
 49                         <tr style="background:#407aaa;color:#fff;">
 50                             <td>名稱</td>
 51                             <td>是否必須</td>
 52                             <td>參數位置</td>
 53                             <td>類型</td>
 54                             <td>默認值</td>
 55                             <td style="width:260px;">備注</td>
 56                         </tr>
 57                         
 58                         <c:forEach var="v" items="${f.formParams}"> 
 59                         
 60                         <tr>
 61                             <td>${v.name}</td>
 62                             <td>${v.necessary}</td>
 63                             <td>${v.inUrl=='true'?'URL地址':'普通參數'}</td>
 64                             <td>${v.type}</td>
 65                             <td>${v.def}</td>
 66                             <td>${v.remark}</td>
 67                         </tr>
 68                         </c:forEach>
 69                     </table>
 70                 </c:if>
 71                 <c:if test="${f.customParams!=null}">
 72                     <h5 style="color:#999999;">請求示列</h5>
 73                     ${f.customParams}
 74                     <br/><br/>
 75                     <h5 style="color:#999999;">參數備注</h5>
 76                     <table style="width:100%;">
 77                         <tr style="background:#407aaa;color:#fff;">
 78                             <th style="width:30px;"></th>
 79                             <th>名稱</th>
 80                             <th style="width:60px;">類型</th>
 81                             <th style="width:50px;">是否必須</th>
 82                             <th style="width:80px;">備注</th>
 83                         </tr>
 84                         <c:forEach var="v" items="${f.paramRemarks}"> 
 85                         <tr>
 86                             <td style="color:red;">${v.deep}</td>
 87                             <td style="padding-left:20px;">
 88                                 <div style="padding-left: ${v.deep*10}px;">${v.name}</div>
 89                             </td>
 90                             <td>${v.type}</td>
 91                             <td>${v.necessary}</td>
 92                             <td>${v.remark}</td>
 93                         </tr>
 94                         </c:forEach>
 95                 </table>
 96             </c:if>
 97             <br/>
 98             <h3>${status.count}.8 請求示例</h3>
 99             <div style="background:#F0F0F0; padding:10px;">
100             <pre style="font-family: SimSun;">${f.model.requestExam}</pre>
101             </div>
102             <br/>
103             <h3>${status.count}.9 返回參數說明</h3>
104             <table style="width:100%;">
105                 <tr style="background:#407aaa;color:#fff;">
106                     <th style="width:30px;"></th>
107                     <th>名稱</th>
108                     <th style="width:60px;">類型</th>
109                     <th style="width:50px;">是否必須</th>
110                     <th style="width:80px;">備注</th>
111                 </tr>
112                 <c:forEach var="v" items="${f.responseParam}"> 
113                 <tr>
114                     <td style="color:red;">${v.deep}</td>
115                     <td style="padding-left:20px;">
116                         <div style="padding-left: ${v.deep*10}px;">${v.name}</div>
117                     </td>
118                     <td>${v.type}</td>
119                     <td>${v.necessary}</td>
120                     <td>${v.remark}</td>
121                 </tr>
122                 </c:forEach>
123             </table>
124             <br/>
125             <h3>${status.count}.10 正確返回示例</h3>
126             <div style="background:#F0F0F0; padding:10px;">
127             <pre>${f.model.trueExam}</pre>
128             </div>
129             <br/>
130             <h3>${status.count}.11 錯誤返回示例</h3>
131             <div style="background:#F0F0F0; padding:10px;">
132             <pre>${f.model.falseExam}</pre>
133             </div>
134             <br/>
135             <h3>${status.count}.12 錯誤碼</h3>
136             <table style="width:100%;">
137                 <tr style="background:#407aaa;color:#fff;">
138                     <td>Code</td>
139                     <td>Msg</td>
140                 </tr>
141                 <c:forEach var="v" items="${f.errors}"> 
142                 <tr>
143                     <td>${v.errorCode}</td>
144                     <td>${v.errorMsg}</td>
145                 </tr>
146                 </c:forEach>
147             </table>
148         </div>
149     </c:forEach>

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM