java中Freemarker list指令詳解
阿新 • • 發佈:2018-12-12
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迴圈變數