博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FreeMarker循环变量内建函数
阅读量:7306 次
发布时间:2019-06-30

本文共 3008 字,大约阅读时间需要 10 分钟。

hot3.png

这些内建函数只能用于list 和 items 指令 的循环变量 (也可以用于已经废弃的 foreach 指令)。 下面是一些说明(loopVar?index 在可以列表的值中进行迭代,返回从0开始的索引):

<#-- Note: x is a loop variable --><#list ['a', 'b', 'c'] as x>  ${x?index}
012

当 list 指令不指定循环变量时, 这些内建函数就作用于 items 指令的循环变量:

<#list ['a', 'b', 'c']>  
    <#items as x>
  • ${x?index}

循环变量内建函数仅仅用于循环变量的 名字, 所以它们可以识别相关进行的迭代。它们不读取循环变量的 。因此,这就会有解析错误:

<#list ['a', 'b', 'c'] as x>  <#assign y = x>  ${y?index} <#-- ERROR: y isn't a loop variable -->

counter

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

返回当前迭代(由循环变量名称识别)从1开始的索引。

<#list ['a', 'b', 'c'] as i>  ${i?counter}: ${i}
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} 
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}
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} 
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} 
true false false

is_last

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项。

<#list ['a', 'b', 'c'] as i>${i?is_last?c} 
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} 
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>  ${i}
a  b  c  d  e  f  g

一些细节:

  • 参数的个数至少是1个,没有上限。

  • 参数的类型是任意的,无需只是字符串。

Note:

如果需要"odd" 和 "even",请使用 item_parity 内建函数 来代替。

item_parity

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

基于当前迭代(由循环变量名称识别)间隔为1的索引的奇偶性, 返回字符串值 "odd" 或 "even"。 这通常用于表格中行间的颜色变换:

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

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>  ${i}
a  b  c  d

Note:

请使用 item_parity 内建函数 来小写 "odd" 和 "even"

转载于:https://my.oschina.net/liuyuantao/blog/795071

你可能感兴趣的文章
swift-4简单的分支和三目的写法
查看>>
小葵花妈妈课堂开课了:《Runnable、Callable、Future、RunnableFuture、FutureTask 源码分析》...
查看>>
【译】在 React 组件中使用 Refs 指南
查看>>
redis映射
查看>>
Java程序员必须掌握的Spring依赖管理原理
查看>>
程序员才能看懂的动图
查看>>
关于HTTP几个请求头含义
查看>>
关于canvas中加载第三方字体问题
查看>>
基于 Zxing 封装的 Hndxing 扫码库
查看>>
Java设计模式-观察者模式
查看>>
《Miss Talk》第03期:对话学霸君吴凯
查看>>
用 node 实现 交互下载 腾讯视频
查看>>
[MySQL光速入门]029 数据库管理和维护
查看>>
Java基础知识(三)
查看>>
前端技术 | 从MV*到Flux
查看>>
Android 中WebView加载Html出现有时页面显示不全问题
查看>>
ActionBar 使用(设置方法)
查看>>
Android Studio使用小技巧
查看>>
重学ES6 Set 数据结构(1)
查看>>
基于源码构建应用的自动部署_开源PaaS Rainbond
查看>>