zoukankan      html  css  js  c++  java
  • 迭代操作-->c:forEach和c:forTokens

    jstl--->Core 核心标签库-->c:forEach  

      在页面上遍历后台传到前台的数据是最基本的最常用的方法  主要包含两种迭代操作:forEach和forTokens

      语法1:迭代集合所有事物  

        <c:forEach [var="varName"] items="collection" [varStatus="varStatusName"]  [begin="begin"] [end="end"] [step="step"]>  </c:forEach>

       语法2:迭代指定的次数  

        <c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin"  end="end" [step="step"]>  </c:forEach>

      属性: 

        var ---> 存放当前成员

        items ---> 被迭代的集合

        varStatus ---> 存放当前对象相关咨询  

        begin ---> 开始的位置  

        end ---> 结束的位置  

        step --->每次迭代的间隔数

       举个栗子:  

      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 text="${status.first}">我是第一个元素</c:if>  

          c:if text="${status.last}">我是最后一个元素</c:if>  

        </c:foreach>  

      --->first表示如果是一个元素,则返回ture,反之则返回false  last 表示如果是最后一个元素,则返回ture,反之则返回false。

       5、循环遍历,按指定步长输出。  

        <c:forEach items="${atts}" var="item" begin="1" end="4" step="2" >  ${item}</br>  </c:forEach>  

      -->表示从集合1-4每隔2个打印出来(1,3);  

        <c:forEach items="${atts}" var="item" begin="4" end="10" step="4" >  ${item}</br>  </c:forEach>  

      -->表示从集合4-10每隔4个打印出来(4,8);

       注:c:forEach并不只是用来浏览集合而已,items并不是一定要有的属性,但是当没有使用items时就必须要有  begin和end两个属性,

      举个栗子:  <c:forEach begin="1" end="10" var="item" >  ${item}</br>  </c:forEach>  

      只有设定begin和end值它既变成一个简单的集合,他将1-10赋值给item

      varStatus ---> 他有四个属性:

         index:当前成员的索引

         count:但目前为止当前成员的总数

         first:当前成员是否是第一个

         last:当前成员是否是最后一个    

      例:   <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>  

    jstl--->Core 核心标签库-->c:forTokens>  

      用来浏览一组字符串的所有成员,由定义符号(delimiters)所分割

      语法:  <c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"]  [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>  </c:forTokens>

      属性:  

        var: 存放当前知道的成员  

        items: 被迭代的字符串  

        delims: 定义用来分割字串的字元  

        varsttus: 存放当前对象相关咨询  

        begin: 开始的位置  

        end: 结束的位置  

        step: 每次迭代的间隔数  

      -->与forEach的区别在于items和delims这两个属性,items必须为字符串,而delims作为分隔符

      举几个栗子:

         <c:forTokens items="A,B,C,D,E" delims="," var="item" >  ${item}  </c:forTokens>  

      页面会输出ABCDE,也就是说字符串被","分割为五部分,并执行了五次轮换,但是逗号没有别打印出来  

        <c:forEach items="A,B,C,D,E" var="item" >  ${item}  </c:forEach>  

      然而我们用c:forEach也能达到目的,区别在于c:Tokens的delims不止能指定一种字元来分割,可以有多种  

        <c:forTokens items="A,B;C-D,E" delims=",;-" var="item" >  ${item}  </c:forTokens>  

      用了三种分割符,所以如果使用c:forTokens来分割字符串,功能和弹性会比c:forEach来的较大

  • 相关阅读:
    SparseArray<E>详解
    Android项目实战(十二):解决OOM的一种偷懒又有效的办法
    浅谈GridLayout(网格布局)
    Android项目实战(十一):moveTaskToBack(boolean ) 方法的使用
    Android Studio 项目代码全部消失--出现原因及解决方法
    Installation failed with message INSTALL_FAILED_UID_CHANGED.--APK安装失败解决方法
    Android项目实战(三十):Fresco加载gif图片并播放
    Android项目实战(十):自定义倒计时的TextView
    坚持一段时间了,达不到原有的目的,就应该放弃了——考研每日总结
    191006
  • 原文地址:https://www.cnblogs.com/juniorjava/p/7262326.html
Copyright © 2011-2022 走看看