循环变量内建函数从
FreeMarker 2.3.23
版本开始存在。
- index
- counter
- has_next
- is_even_item
- is_first
- is_last
- is_odd_item
- item_cycle
- item_parity
- item_parity_cap
index
这些内建函数只能用于list
和items
指令 的循环变量 (也可以用于已经废弃的foreach
指令)。
下面是一些说明(loopVar?index 在可以列表的值中进行迭代,返回从0开始的索引):
<#list ['a', 'b', 'c'] as x>
${x?index}
</#list>
输出:(输出索引值)
0
1
2
要从1开始的索引,请使用counter 内建函数。
counter
返回当前迭代(由循环变量名称识别)从1开始的索引。
<#list ['a', 'b', 'c'] as i>
${i?counter}: ${i}
</#list>
输出:(输出索引值)
1: a
2: b
3: c
要从0开始的索引,请使用 index 内建函数。
has_next
辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项
。
<#list ['a', 'b', 'c'] as i>${i?has_next?c} </#list>
输出:(输出索引值)
true true false
注意:
- 使用逗号等隔开循环项,请使用
<#sep>separator</#sep>
来代替<#if var?has_next>separator</#if>
,这样可读性更强。- 如果需要对该内建函数取反,请使用
var?is_last
来代替!var?has_next
, 因为它的可读性更强。
is_even_item
辨别循环项是否是当前迭代(由循环变量