1. 程式人生 > >java中Freemarker list指令詳解

java中Freemarker list指令詳解

java Freemarker中list指令主要是進行迭代伺服器端傳遞過來的List集合。

定義

<#list nameList as names>    
  ${names}   
</#list>

name是list迴圈的時候取的一個迴圈變數.相關指令如下:
item_index:當前變數的索引值 
item_has_next:是否存在下一個物件
break:跳出迭代

//遍歷MAP
<#list map?keys as k>
     <option value="${k}">${map[k]}</option>
</#list>

方式

1. 獲取或者設定list相關資訊

<#list animals as ani>
    <!-- 獲取list的size長度 -->
    <div>${list?size}<div>
    <!-- 獲取list遍歷中的下標序號 -->
    <div>${ani_index}<div>
    <!-- 遍歷list的值 -->
    <div>${ani.name}${ani.price}<div>
    <!-- 是否是最後一個元素 -->
    <#if !ani_has_next>
        ${ani.name}
    </#if>
</#list>

2. list排序

//升序:sort_by()
<#list list?sort_by("欄位") as x>
</#list>
//降序:sort_by()?reverse
<#list list?sort_by("欄位")?reverse as x>
</#list>

3. list巢狀

<#list jsskList as jsskVO>
    <#list kcList as kcVO>
        <!-- kcVO裡有編號和名稱,而jsskVO裡只有編號 -->
        <#if kcVO.kch=jsskVO.kch> 
            ${kcVO.kcm}
        </#if>
    </#list>
</#list>

例子

//testList.java
@Test
public void testList() {
    List < Student > students = Arrays.asList(
        new Student("張三丰", "男", 26, new Date(1988 - 12 - 12), "湖北省武漢市武昌洪山區", 78451214),
        new Student("李雪", "女", 20, new Date(1991 - 12 - 18), "湖北省武漢市武昌", 85451214),
        new Student("劉劉", "男", 22, new Date(1989 - 10 - 18), "湖南省長沙市", 96551214),
        new Student("吳明", "女", 21, new Date(1990 - 12 - 18), "廣東省深圳市", 56132012));
    root.put("students", students);
    ft.printFtl("stu.ftl", root);
}
//stu.ftl
<html>  
  <head>  
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  </head>  
  <body>  
        <#list students as student>  
                  姓名:${student.studentName}  
            性別:${student.studentSex}  
            年齡:${student.studentAge}  
            生日:${(student.studentBirthday)?string("yyyy-MM-dd")}  
            地址:${student.studentAddr}  
            QQ:${student.studentQQ}<br/>  
        </#list>  
  </body>  
</html>

總結

1. List指令還隱含了兩個迴圈變數:item_index:當前迭代項在所有迭代項中的位置,是數字值。item_has_next:用於判斷當前迭代項是否是所有迭代項中的最後一項。在使用上述兩個迴圈變數時,一定要將item換成你自己定義的迴圈變數名

2. Freemarker list迴圈過程中,如果您想跳出迴圈,那麼可以使用結合break指令,即<#break>來完成。

java中Freemarker if else指令詳解java中Freemarker switch case指令詳解java中Freemarker include指令詳解java中Freemarker import指令詳解java中Freemarker setting指令詳解java中Freemarker assign指令詳解java中Freemarker macro自定義指令詳解java中Freemarker macro引數定義java中Freemarker macro如何巢狀內容java中Freemarker macro迴圈變數

from:http://www.51gjie.com/javaweb/881.html