从freemarker中的列表中获取子列表

时间:2013-08-27 06:28:57

标签: freemarker

我有一个免费标记列表如下:

 <#assign listVar = ["v1", "v2", "v3", "v4" ] />

从上面的列表中我只想将子列表作为v1和v2。

我一直在游荡以获得免费标记的子列表。但无法找到。

任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:10)

如果你真的想根据索引制作那个切片:

<#assign listVar = ["v1", "v2", "v3", "v4" ] />
<#assign sublistVar = listVar[0..1] />

请参阅Freemarker Sequence slicing

但要注意,如果索引超出范围,它将会因错误而停止。根据您的需要,您可能需要使用?chunk(2)

更新:至于避免索引越界错误,在FreeMarker 2.3.21中,您可以发出listVar[0..*2],这将分割掉2个项目,如果少于可用。 (也可以使用独占端切片:listVar[0..<2]

答案 1 :(得分:1)

列出序列时,可以使用index变量。

<#assign listVar = ["v1", "v2", "v3", "v4" ] />
<#list listVar as aVar>
    <#if aVar_index > 2><#break/></#if>
</#list>

您还可以使用chunk对序列进行分区。这将以给定大小的多个序列分割序列。

<#assign partitions = listVar?chunk(2) />
<#assign firstPartition = partitions?first />

来源:FreeMarker Manual

但是,最好在将数据传递给模板之前对其进行过滤。