freemark的list遍历内置函数详解

基于freemarker 2.3.28

1. index 返回列表的索引从0开始

template:

<#list ['a', 'b', 'c'] as x>
  ## 写成x_index也可以
  ${x?index}

output:

0
1
2

2. counter 计数器 索引从1开始

template:

<#list ['a', 'b', 'c'] as i>
${i?counter}: ${i}

output:

1: a
2: b
3: c

3. has_next 是否还有下一个

最后一个时返回false 其它的为true

template:

<#list ['a', 'b', 'c'] as i>${i?has_next?c} 

output:

true true false 

当不得不显示介于每个迭代项(但不能在第一项之前或最后一项之后) 之间的一些内容时,可以使用 sep更方便。例如:
templae:
<#list users as user>${user}<#sep>,
output:
Joe, Kate,Fred

4. is_even_item 是否是偶数索引

第0 ,2 , 4…个时返回true

template:

<#list ['a', 'b', 'c', 'd'] as i>${i?is_even_item?c} 

output:

false true false true

5.is_odd_item 是否是奇数索引

template:

<#list ['a', 'b', 'c', 'd'] as i>${i?is_odd_item?c} 

output:

true false true false 

6. is_first 是否是第一个

第一个返回true

template:

<#list ['a', 'b', 'c'] as i>${i?is_first?c} 

output:

true false false 

7. is_last 是否是最后一个

template:

<#list ['a', 'b', 'c'] as i>${i?is_last?c} 

output:

false false true

##8. item_parity 返回“odd”或者“even”

这个是基于第一个索引是1开始的,返回的是小写字符串

template:

<#list ['a', 'b', 'c', 'd'] as i>
${i}

output:

  a
  b
  c
  d

9. item_parity_cap 返回“Odd”或者“Even”

item_parity的区别: 返回的首字母大写 “Odd”或者“Even”

template:

<#list ['a', 'b', 'c', 'd'] as i>
${i}

output:

  a
  b
  c
  d

10. item_cycle 自定义循环索引

template:

<#list ['a', 'b', 'c', 'd', 'e', 'f', 'g'] as i>
${i}

output:

  a
  b
  c
  d
  e
  f
  g

你可能感兴趣的:(freemark)