注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

细节决定成败

 
 
 

日志

 
 

c:forEach  

2010-10-12 13:21:04|  分类: JSTL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 :Core(核心库)

URI : http://java.sun.com/jsp/jstl/core

前缀 : 

描述 : <c:forEach>动作将其体反复计算固定次数,或者针对一个集合中的每个元素分别计算一次体。当前元素(如果未指定集合则为当前索引)和迭代状态可以通过嵌套变量提供给体中的动作元素。 

此动作接受属性表中所列的类型集合。当前元素的类型即为底层集合的类型,仅有两个例外。对于一个基本类型的数组,当前元素将作为相应包装类(Integer、Float等等)的一个实例提供。对于一个java.util.Map,当前元素则作为一个java.util.Map.Entry提供。

语法 :

语法1:基于集合元素进行迭代  

<c:forEach items="collection" [var="var"] [varStatus="varStatus"] 

[begin="startIndex"] [end="stopIndex"] [step="increment"]> 

JSP elements 

</c:forEach> 

语法2:迭代固定次数 

<c:forEach [var="var"] [varStatus="varStatus"] 

begin="startIndex" end="stopIndex" [step="increment"]> 

JSP elements 

</c:forEach> 

属性 :

属性名

描述

类型

是否接受动态值

是否支持 EL

是否

必须

默认值

说明

begin 

开始位置

int 

Y

Y

0

结合集合使用时的开始索引,从0计起。对于集合来说默认为0 

end 

结束位置

int 

Y

Y

最后一个成员

结合集合使用时的结束索引(元素引要小于等于此结束索引),从0计起。默认为集合的最后一个元素。如果end小于begin,则根本不计算体集合,迭代即要针对此集合进行。

items 

被迭代的集合对象

Collection, 

Iterator, Enumeration, 

Map, 

数组

Y

Y

集合,迭代即要针对此集合进行。

step 

步长

int 

Y

Y

1

每次迭代时索引的递增值。默认为1。

var

当前项目

String 

N

N

保存当前元素的嵌套变量的名字。

varStatus 

循环状态

String 

N

N

保存LoopTagStatus对象的嵌套变量的名字。

Null 和 错误处理

.假若items为null时,则表示为一空的集合对象

.假若begin大于或等于items时,则迭代不运算

注意:

varName的范围只存在<c:forEach>的本体中,如果超出了本题,则不能取得varName的值。如:

<c:forEach items="${atts}" var="item">

</c:forEach>

${item}</br>

${item}则不会显示item的内容。<c:forEach>除了支持数组之外,还有标准的J2SE的结合类型,例如:

ArrayList,List,LinkedList,Vector,Stack和Set等等;另外包括java.util.Map类的对象,例如:

HashMap,Hashtable,Properties,Provider和Attributes。

另外<c:forEach>还提供了varStatus属性,主要用来存放现在指到成员的相关信息。例如:我们写成

varStatus="s",那么就会把信息存放到名称为s的属性当中。varStatus属性还提供另外四个属性:index,

count,fist和last,它们个自的意义如下:

属性                   类型                                  意义

  index                  number                    现在指到成员的索引

  count                  number                    总共指到成员的总和

  first                   boolean                    现在指到成员是否为第一个

  last                    boolean                   现在指到成员是否为最后一个

实例 :

----------------------------------------------------------------------------------------------------------------------------------------

Example1

< %@page  contentType="text/html;charset=gb2312"%>

< %@taglib  prefix="c" uri=" http://java.sun.com/jsp/jstl/core"% >

<%

 String atts[] = new String[5];

 atts[0]="hello";

 atts[1]="this";

 atts[2]="is";

 atts[3]="a";

 atts[4]="girl";

 request.setAttritue("atts",atts);

%>

<c:forEach items="${atts}" var="item" varStatus="s">

<h2><c:out value="${item}"/>的四种属性></h2>

 index: ${s.index}</br>

 count: ${s.count}</br>

 first: ${s.first}</br>

 last: ${s.last}</br> 

</c:forEach>

----------------------------------------------------------------------------------------------------------------------------------------

Example2

综合实例

< select >        

   < c:forEach  items = " ${model.options} "   var = "forum" >

      < c:choose >

         < c:when  test = " ${forum.id == model.forumId} " >

           < option  value = " ${forum.id} "   elected > ${forum.name} </option >

          </ c:when >

       < c:otherwise >

          < option  value = " ${forum.id} " > ${forum.name} </ option >

       </ c:otherwise >

     </ c:choose >

   </ c:forEach >  

</ select >

Example3

奇偶行样式

<c:forEach items="${model.page.list}" var="observer" varStatus="loop"> 

  < tr class="row$(loop.count%2)">

    <td>迭代observer</td>

    <td>迭代observer</td>

    ...

  </tr>

</c:forEach>

Example4

分页条1

< c:set  var = "page"  value = " ${model.page} " ></ c:set >

< table  width = "800"  align = "center"  cellpadding = "0"  cellspacing = "0" >  

   < tr  class = "even" >

     < td  height = "20"  align = "center"  colspan = "3"  valign = "top" >                

       <  href = "javascript:page(1)"  class = "gr_pages" > 首页 </ a >    

    < c:if  test = " ${page.currentPage > 1} " >

      <  href = " javascript:page( < c:out   value = " ${page.currentPage -1 } "   /> ) "  class = "gr_pages" > 上页 </ a >

    </ c:if >                   

    < c:if  test = " ${page.currentPage < page.totalPage} " >

    <    href = " javascript:page( < c:out   value = " ${page.currentPage +1 } "   /> ) "  class = "gr_pages" > 下页 </ a >

    </ c:if >  

    <  href = " javascript:page( < c:out   value = " ${page.totalPage} "   default = "1"  /> ) "   class = "gr_pages" > 末页 </ a >

    当前第 < c:out  value = " ${page.currentPage} "   /> / < c:out  value = "${page.totalPage} "   /> 页     

     </ td >

   </ tr >

</ table >

Example5

分页条2

< div  align = "center" >< span  class = "all_font12" >   < a

      href = " jsp/vote/voteAreaService.do?method=listVote¤tPage=1&subareaCode=${param.subareaCode} "   class = "gr_pages" >  首页  </ a >     < c:if

      test = " ${page.currentPage > 1 } " >

      < a

        href = " jsp/vote/voteAreaService.do?method=listVote¤tPage=${page.currentPage - 1} &subareaCode= ${param.subareaCode} "

        class = "gr_pages" >  前页  </ a >  

         </ c:if >   < a

      href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage}&subareaCode= ${param.subareaCode} " >

      < c:out  value = " ${page.currentPage} "   /></ a >    

      < c:if

      test = " ${page.currentPage + 1 <= page.totalPage} " >

      < a

        href = " jsp/vote/voteAreaService.do?method=listVote¤tPage=${page.currentPage + 1} &subareaCode= ${param.subareaCode} " >< c:out

        value = " ${page.currentPage + 1} "   /></ a >  

         </ c:if >   < c:if  test = " ${page.currentPage + 2 <= page.totalPage} " >

      < a

        href = " jsp/vote/voteAreaService.do?method=listVote¤tPage=${page.currentPage + 2} &subareaCode= ${param.subareaCode} " >< c:out

        value = " ${page.currentPage + 2} "   /></ a >  

         </ c:if >   < c:if  test = " ${page.currentPage + 3 <= page.totalPage} " >

      < a

        href = " jsp/vote/voteAreaService.do?method=listVote¤tPage=${page.currentPage + 3} &subareaCode= ${param.subareaCode} " >< c:out

        value = " ${page.currentPage + 3} "   /></ a >  

         </ c:if >   < c:if  test = " ${page.currentPage <page.totalPage} " >

      < a

        href = " jsp/vote/voteAreaService.do?method=listVote¤tPage=${page.currentPage + 1} &subareaCode= ${param.subareaCode} "

        class = "gr_pages" > 后页 </ a >  

         </ c:if >   < a

      href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.totalPage}&subareaCode= ${param.subareaCode} "

      class = "gr_pages" > 末页 </ a >   < a > 当前第 < c:out

      value = " ${page.currentPage} "   /> / < c:out

      value = " ${page.totalPage} "   />  </ a ></ span ></ div >

Example6

综合实例

<%@  page  import="java.util.Map"  %> 

<%@  page  import="java.util.HashMap"  %> 

<%@  taglib  prefix="c"  uri="http://java.sun.com/jsp/jstl/core"  %> 

<% 

  Map  map  =  new  HashMap(); 

  map.put("a",  "12345"); 

  map.put("b",  "abcde"); 

  out.println(map.get("a")); 

  request.setAttribute("map",map); 

%> 

<!--  完全迭代  -->

<c:forEach  items="${map}"  var="mymap"  > 

    <c:out  value="${mymap.key}"  /> 

    <c:out  value="${mymap.value}"  /> 

</c:forEach> 

<!-- 根据map的key来找到特定的值 -->

<c:forEach    items="${map}"    var="mymap">  

      <c:if    test="${mymap.key=='a'}">  

          <c:out    value="${mymap.value}"/>  

      </c:if>  

</c:forEach>     

  评论这张
 
阅读(967)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018