PreviousNext
循环变量内建函数
Page Contents
counterhas_nextindexis_even_itemis_firstis_lastis_odd_itemitem_cycleitem_parityitem_parity_cap
Note:
循环变量内建函数从 FreeMarker 2.3.23 版本开始存在。
这些内建函数只能用于list 和
items 指令 的循环变量
(也可以用于已经废弃的 foreach 指令)。
下面是一些说明(loopVar?index
在可以列表的值中进行迭代,返回从0开始的索引):
<#-- Note: x is a loop variable -->
<#list ['a', 'b', 'c'] as x>
${x?index}
#list>
0
1
2当 list 指令不指定循环变量时,
这些内建函数就作用于 items 指令的循环变量:
<#list ['a', 'b', 'c']>
- ${x?index}
<#items as x>
#items>
#list>循环变量内建函数仅仅用于循环变量的 名字,
所以它们可以识别相关进行的迭代。它们不读取循环变量的
值。因此,这就会有解析错误:
<#list ['a', 'b', 'c'] as x>
<#assign y = x>
${y?index} <#-- ERROR: y isn't a loop variable -->
#list>
counter
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
返回当前迭代(由循环变量名称识别)从1开始的索引。
<#list ['a', 'b', 'c'] as i>
${i?counter}: ${i}
#list>
1: a
2: b
3: c
Note:
要从0开始的索引,请使用 index
内建函数。
has_next
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项。
<#list ['a', 'b', 'c'] as i>${i?has_next?c} #list>
true true false
Note:
使用逗号等隔开循环项,请使用
<#sep>separator#sep>
来代替 <#if
var?has_next>separator#if>,这样可读性更强。(此外
#sep> 经常被忽略,比如在
<#list ... as
var>...${var}...<#sep>separator#list>
中)
Note:
如果需要对该内建函数取反,请使用
var?is_last 来代替
!var?has_next,
因为它的可读性更强。
index
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
返回当前迭代(由循环变量名称识别)从0开始的索引。
<#list ['a', 'b', 'c'] as i>
${i?index}: ${i}
#list>
0: a
1: b
2: c
Note:
要从1开始的索引,请使用 counter
内建函数。
is_even_item
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
辨别循环项是否是当前迭代(由循环变量名称识别)间隔1的奇数项。
<#list ['a', 'b', 'c', 'd'] as i>${i?is_even_item?c} #list>
false true false true
Note:
要将表格进行行间变色等操作,请使用
var?item_parity
或 var?item_cycle(...)
来代替。
is_first
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
辨别循环项是否是当前迭代(由循环变量名称识别)的第一项。
<#list ['a', 'b', 'c'] as i>${i?is_first?c} #list>
true false false
is_last
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项。
<#list ['a', 'b', 'c'] as i>${i?is_last?c} #list>
false false true
Note:
如果需要对该内建函数取反,请使用
var?has_next 来代替
!var?is_last,
因为它的可读性更强。
Note:
使用逗号等隔开循环项,请使用
<#sep>separator#sep>
来代替 <#if
var?has_next>separator#if>,因为它的可读性更强。(此外
#sep> 经常被忽略,比如在
<#list ... as
var>...${var}...<#sep>separator#list>
中)
is_odd_item
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
辨别循环项是否是当前迭代(由循环变量名称识别)间隔1的偶数项。
<#list ['a', 'b', 'c', 'd'] as i>${i?is_odd_item?c} #list>
true false true false
Note:
要将表格进行行间变色等操作,请使用
var?item_parity
或 var?item_cycle(...)
来代替。
item_cycle
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
这是 item_parity
内建函数 更为通用的版本,这里可以指定何值来代替
"odd" 和 "even"。
它也允许多余两个值来循环。
<#list ['a', 'b', 'c', 'd', 'e', 'f', 'g'] as i>
#list>
一些细节:
参数的个数至少是1个,没有上限。
参数的类型是任意的,无需只是字符串。
Note:
如果需要"odd"
和 "even",请使用 item_parity
内建函数 来代替。
item_parity
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
基于当前迭代(由循环变量名称识别)间隔为1的索引的奇偶性,
返回字符串值 "odd" 或 "even"。
这通常用于表格中行间的颜色变换:
<#list ['a', 'b', 'c', 'd'] as i>
#list>
Note:
请使用 item_parity_cap
内建函数 来大写 "Odd" 和
"Even"。请使用 item_cycle
内建函数 来指定自定义值,或多于两个值。
item_parity_cap
Note:
该内建函数从 FreeMarker 2.3.23 版本开始可用。
基于当前迭代(由循环变量名称识别)间隔为1的索引的奇偶性,
返回字符串值 "Odd" 或 "Even"
(请注意大写)。
<#list ['a', 'b', 'c', 'd'] as i>
#list>
Note:
请使用 item_parity
内建函数 来小写 "odd" 和
"even"。
PreviousNext