首页 > 解决方案 > 在 freemarker 列表中设置开始索引

问题描述

如何在 freemarker 列表中设置开始索引?

像jstl

<c:forEach var="item" items="${screenshot.results}" begin="2">
    <a href="${item.image}"
       class="fresco"
       data-fresco-group="game-detail-pic">
    </a>
</c:forEach>

我想从第二个索引开始。

标签: springspring-bootjsptemplatesfreemarker

解决方案


您可以使用内置的序列

应用内置序列允许所有序列操作,例如 seq[index]、seq[range] 或 seq?size。如果这些操作直接应用于从集合转换的序列,则 FreeMarker 会优化在内存中实际创建序列。因此,无论过滤后的 hugeTable 大小如何,这些都不会消耗太多内存:

hugeTable?filter(predicate)?sequence[index]:FreeMarker 只会获取并删除元素,直到它到达所需位置的元素。

hugeTable?filter(predicate)?sequence[0..9]:FreeMarker 只会收集前 10 个元素。

例子:

<#assign a=[1,2,3,5,6]>
<#list a?filter(x ->  x > 0)?sequence[1..4] as x>${x} </#list>

推荐阅读