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