内置插件对序列
一、first:序列的第一个值,如果序列为空,模板处理时会抛异常
<#assign maple=[‘hhh’,’bbb’,’ccc’,’ddd’,’eee’,’ttt’,’hhh’]>
${maple?first}将输出hhh
二、last:序列的最后一个值,如果序列为空,也会抛异常
${maple?last}将输出hhh
三、seq_contains:判断一个序列中是否存在某个值(存在于FreeMarker2.3.1及以后版本中)
这个内置插件前面加一个前缀seq_用来区分在string操作中的contains
这里seq_contains返回的是Boolean,不能直接使用${}将其输出,如:${maple?seq_contains(‘ccc’)},这个写法是错误,但如果你一定要输出的话,可以将Boolean转换为string,即:${maple?seq_contains(‘ccc’)?string}
四、seq_index_of:这个内置插件存在于FreeMarker23.1中,返回的是指定值在序列中的索引,前面加上seq_前缀是用于区分string中的index_of内置插件。
返回的是第一次出现指定值在序列中的索引,如果没有匹配的值返回-1
如:${maple?seq_index_of(‘ddd’)}将返回3
五、seq_last_index_of:序列中最后一次出现某个值的索引,如果没有返回-1
${maple?seq_last_index_of(‘hhh’)}
六、reverse:反序
七、size序列的大小
八、sort:排序,返回升序排列。使用语言环境的特定词汇排序
九、sort_by:根据制定的内容排序
<#assign ls=[
{"name":"whale", "weight":2000},
{"name":"Barbara", "weight":53},
{"name":"zeppelin", "weight":-200},
{"name":"aardvark", "weight":30},
{"name":"beetroot", "weight":0.3}
]>
<#list ls?sort_by(‘name’) as i>
${i.name}:${i.weight}
<#list?>
<#list ls?sort_by(‘weight’) as i>
${i.name}:${i.weight}
</#list>
十、chunk:块。
在FreeMarker2.3.3中存在
这个内置插件是对序列进行分割,建立多个序列,大小根据参数断定。
chunk有两个参数chunk(length,fill);
第一个参数表示建立小序列的大小,如果不书写第二个参数,最后一个序列大长度可能小于这个值
如果书写第二个参数,最后一个序列的程度若小于length,就会使用该参数进行填充。
如:
<#assign maple=[‘hhh’,’bbb’,’ccc’,’ddd’,’eee’,’ttt’,’hhh’]>
<#list maple?chunk(3) as row>
<#list row as cell>
${cell}
</#list>
</#list>
<#list maple?chunk(3,’-’) as row>
<#list row as cell>
${cell}
</#list>
</#list>
输出结果:
hhh
bbb
ccc
ddd
eee
ttt
hhh
hhh
bbb
ccc
ddd
eee
ttt
hhh
一、first:序列的第一个值,如果序列为空,模板处理时会抛异常
<#assign maple=[‘hhh’,’bbb’,’ccc’,’ddd’,’eee’,’ttt’,’hhh’]>
${maple?first}将输出hhh
二、last:序列的最后一个值,如果序列为空,也会抛异常
${maple?last}将输出hhh
三、seq_contains:判断一个序列中是否存在某个值(存在于FreeMarker2.3.1及以后版本中)
这个内置插件前面加一个前缀seq_用来区分在string操作中的contains
这里seq_contains返回的是Boolean,不能直接使用${}将其输出,如:${maple?seq_contains(‘ccc’)},这个写法是错误,但如果你一定要输出的话,可以将Boolean转换为string,即:${maple?seq_contains(‘ccc’)?string}
四、seq_index_of:这个内置插件存在于FreeMarker23.1中,返回的是指定值在序列中的索引,前面加上seq_前缀是用于区分string中的index_of内置插件。
返回的是第一次出现指定值在序列中的索引,如果没有匹配的值返回-1
如:${maple?seq_index_of(‘ddd’)}将返回3
五、seq_last_index_of:序列中最后一次出现某个值的索引,如果没有返回-1
${maple?seq_last_index_of(‘hhh’)}
六、reverse:反序
七、size序列的大小
八、sort:排序,返回升序排列。使用语言环境的特定词汇排序
九、sort_by:根据制定的内容排序
<#assign ls=[
{"name":"whale", "weight":2000},
{"name":"Barbara", "weight":53},
{"name":"zeppelin", "weight":-200},
{"name":"aardvark", "weight":30},
{"name":"beetroot", "weight":0.3}
]>
<#list ls?sort_by(‘name’) as i>
${i.name}:${i.weight}
<#list?>
<#list ls?sort_by(‘weight’) as i>
${i.name}:${i.weight}
</#list>
十、chunk:块。
在FreeMarker2.3.3中存在
这个内置插件是对序列进行分割,建立多个序列,大小根据参数断定。
chunk有两个参数chunk(length,fill);
第一个参数表示建立小序列的大小,如果不书写第二个参数,最后一个序列大长度可能小于这个值
如果书写第二个参数,最后一个序列的程度若小于length,就会使用该参数进行填充。
如:
<#assign maple=[‘hhh’,’bbb’,’ccc’,’ddd’,’eee’,’ttt’,’hhh’]>
<#list maple?chunk(3) as row>
<#list row as cell>
${cell}
</#list>
</#list>
<#list maple?chunk(3,’-’) as row>
<#list row as cell>
${cell}
</#list>
</#list>
输出结果:
hhh
bbb
ccc
ddd
eee
ttt
hhh
hhh
bbb
ccc
ddd
eee
ttt
hhh