我有一个免费标记列表如下:
<#assign listVar = ["v1", "v2", "v3", "v4" ] />
从上面的列表中我只想将子列表作为v1和v2。
我一直在游荡以获得免费标记的子列表。但无法找到。
任何帮助都会受到赞赏。
答案 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 />
但是,最好在将数据传递给模板之前对其进行过滤。