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>来完成。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。