freemarker循环

记一个freemarker循环的例子:


<#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!=''>
${fieldValue!''}

讲一下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>
    

${student_index}. ${student.name}

输出结果为:

0. bob

1. jack

2. mark


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

<#list studList as student>
	

${student.name}

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

输出结果为:

bob

jack

mark

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

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

<#list studList as student>
	<#if student.age gt 16>
		<#break>
	
	

${student.name}

输出结果为:

bob

jack


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

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


sort升序排序:

<#list [2,6,3,7]?sort as number>
	

${number}

输出结果为:

2

3

6

7


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

<#list [2,6,3,7]?reverse as number>
	

${number}

输出结果为:
7

3

6

2

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


降序排序:

<#list [2,6,3,7]?sort?reverse as number>
	

${number}

输出结果为:

7

6

3

2


sort_by()排序:

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

<#list studList?sort_by("age") as student>
	

名字:${student.name},年龄:${student.age}

上面代码中,参数为“age”,它是student对象的属性,排序将按照student对象中“age”的值进行。

输出结果为:

名字:jack,年龄:13

名字:bob,年龄:15

名字:mark,年龄:18

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


你可能感兴趣的:(HTML)