jstl标签的<c:foreach>用法

来源:互联网 发布:spark sql mongodb 编辑:程序博客网 时间:2024/05/15 02:54
<c:foreach>用法
转的,可以用来作为自己的学习笔记
<c:foreach>类似于for和foreach循环   以下是我目前见过的用法: 
1、循环遍历,输出所有的元素。 
<c:foreach items="${list}" var="li"> 
${li} 
</c:foreach> 
注意:items 用于接收集合对象,var 定义对象接收从集合里遍历出的每一个元素。同时其会自动转型。 
2、循环遍历,输出一个范围类的元素。 
<c:foreach items ="${lis}" var = "li " begin="2" end ="12"> 
${li} 
</c:foreach> 
注意:begin 定义遍历的开始位置,end定义遍历的结束位置。begin 和end的引号必须写。 
3、循环遍历,输出除某个元素以外的元素或输出指定元素。 
<c:foreach items="${list}" var ="li" varStatus="status"> 
<c:if text="${status.count==1}> 
${"第一个元素不要"} 
</c:if> 
${li} 
</ c:foreach> 

注意:varStatus 表示当前集合的状态(其实是不是,我也不太清楚,只知道这样用,会的人指点下),count为循环一个计算器。 

4、循环遍历,输出第一个或最后一个元素。 
<c:foreach items="${list}" var ="li" varStatus="status"> 
<c:if test="${status.first}">我是第一个元素</c:if> 
<c:if test="${status.last}">我是最后一个元素</c:if> 
</c:foreach> 
注意:first表示如果是一个元素,则返回ture,反之则返回false 
           last 表示如果是最后一个元素,则返回ture,反之则返回false。
5、循环遍历,按指定步长输出。
<c:foreach items="list" var ="li" step="2">
${li}
</c:foreach>
注意:step为循环的步长。每次隔两个单位输出一个。如:1、3、5、==

6. varStatus的用法

varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性。就拿varStatus=“status”来说,事实上定义了一个status名的对象作为varStatus的绑定值。该绑定值也就是status封装了当前遍历的状态,比如,可以从该对象上查看是遍历到了第几个元素:${status.count}。
我们常会用c标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行、偶数行差异;最后一行特殊处理等等。先就varStatus属性常用参数总结下: 
${status.index}      输出行号,从0开始。

${status.count}      输出行号,从1开始。

${status.current}   当前这次迭代的(集合中的)项${status.first}  判断当前项是否为集合中的第一项,返回值为true或false。${status.last}   判断当前项是否为集合中的最后一项,返回值为true或false

begin、end、step分别表示:起始序号,结束序号,跳跃步伐。
如:<c:forEach begin='1' end='5' step='2' items='${list}' var='item'>表示:操作list集合汇中1~5条数据,不是逐条循环,而是按每2个取值。即操作集合中的第1、3、5条数据。


//以,号作为字符串分隔!变量名 delims属性可以随便加,可以有一个多或多个 作为分隔符

<c:forTokens items="12,34,56,78.89" delims="," var="dailyPrice">
    <tr>
     <td><c:out value="${dailyPrice}" /></td>

   </tr>

我们最常用的就是count和index,用来搞斑马线表格
常见的用法的是

<c:forEach var="varity" items="${sessionScope.myList}" varStatus="status">
         <!--实现斑马线效果--> 
                    <c:if test="${status.count%2==0}" >
                                <tr bgcolor="lightyellow">
                     </c:if>
                     <c:if test="${status.count%2!=0}" >
                                 <tr>
                                  </c:if>
                                       <td>Elements</td>
                                 </tr> 
                     </c:forEach>

<c:forEach var="varity" items="${sessionScope.myList}" varStatus="status">
         ${status.first}/${status.last}
               当前:${status.current}
 </c:forEach>


参考链接:

http://blog.163.com/xueling1231989@126/blog/static/10264080720129122955489/

http://my.oschina.net/xsh1208/blog/179841

0 0
原创粉丝点击