8

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

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

从上面的列表中,我只希望子列表为 v1 和 v2。

我一直在徘徊以获取免费标记中的子列表。但是没能找到。

任何帮助将不胜感激。

4

2 回答 2

13

如果您真的想根据索引制作该切片:

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

请参阅Freemarker 序列切片

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

更新:为避免 index-out-of-bounds 错误,在 FreeMarker 2.3.21 中,您可以发出listVar[0..*2],这将切出 2 个项目,如果可用的项目更少,则更少。(独家端切片也可以派上用场listVar[0..<2]:)

于 2013-08-27T14:01:32.130 回答
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 手册

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

于 2013-08-27T08:22:41.397 回答