欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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