freemarker循环
程序员文章站
2022-07-14 09:54:44
...
记一个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
上一篇: 单例模式-双重检测
下一篇: python:selenium