1. 程式人生 > >叠代操作-->c:forEach和c:forTokens

叠代操作-->c:forEach和c:forTokens

sna 同時 ems false 第一個 token 結束 部分 標簽

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來的較大

叠代操作-->c:forEach和c:forTokens