freemarker循环

来源:互联网 发布:linux 变量相加 编辑:程序博客网 时间:2024/06/07 09:54

记一个freemarker循环的例子:

<!-- mouldDataList:商品组列表   vo.extendedFieldMap:一个商品的字段map集合 --><div class="cms_page-danmu"><#if mouldDataList??><#list mouldDataList as vo><#assign fieldMap = vo.extendedFieldMap><#if fieldMap?exists><#list fieldMap?keys as key><#if (fieldMap.get(key))??><#assign fieldValue = fieldMap.get(key)><#if fieldValue?? && fieldValue!=''><div class="danmu_item ${bgColors!'danmu_item1'}"><span class="dot"></span><span class="arrow"></span><div class="text"> ${fieldValue!''} </div></div></#if></#if></#list></#if></#list>  </#if></div>

讲一下list循环:

以下例子中 student对象有name age 两个属性。studList包含3个student对象,其值为:

[    {        "name": "bob",        "age": 15    },    {        "name": "jack",        "age": 13    },    {        "name": "mark",        "age": 18    }]

a.获取list中元素的下标:

<#list studList as student>    <p>${student_index}. ${student.name}</p></#list>

输出结果为:

0. bob

1. jack

2. mark


b.判断是否是最后一个元素:

<#list studList as student><p>${student.name}</p><#if !student_has_next>最后一个学生为:${student.name},共有${studList?size}个学生</#if></#list>

输出结果为:

bob

jack

mark

最后一个学生为:mark,共有3个学生

c.循环到某一值时退出:

<#list studList as student><#if student.age gt 16><#break></#if><p>${student.name}</p></#list>
输出结果为:

bob

jack


d.sort升序排序和reverse逆序排序以及sort_by()升序排序:

sort对list进行排序,要求list中的变量需为以下几种类型:数字、字符串(按首字母排序)、日期


sort升序排序:

<#list [2,6,3,7]?sort as number><p>${number}</p></#list>
输出结果为:

2

3

6

7


reverse逆序排序(注意是逆序,不是降序)

<#list [2,6,3,7]?reverse as number><p>${number}</p></#list>
输出结果为:
7

3

6

2

reverse还可以用于对对象数组的逆序排序,这点和sort不同。因为reverse只是将数组倒过来,并不需要排序因子。


降序排序:

<#list [2,6,3,7]?sort?reverse as number><p>${number}</p></#list>
输出结果为:

7

6

3

2


sort_by()排序:

sort_by()排序函数用于对对象进行排序,此函数需要传入一个参数,该参数为对象的一个属性,sort_by将会把属性对应的值作为排序的依据。

<#list studList?sort_by("age") as student><p>名字:${student.name},年龄:${student.age}</p></#list>
上面代码中,参数为“age”,它是student对象的属性,排序将按照student对象中“age”的值进行。

输出结果为:

名字:jack,年龄:13

名字:bob,年龄:15

名字:mark,年龄:18

如果想按age的值进行降序,可加上reverse进行转换:studList?sort_by("age")?reverse


原创粉丝点击