Вы можете использовать sequence встроенный
применение встроенной последовательности позволяет все операции последовательности, такие как seq [index], seq [range] или seq? Size , Если эти операции непосредственно применяются к последовательности, которая была преобразована из коллекции, FreeMarker оптимизирует фактическое создание последовательности в памяти. Таким образом, они не будут занимать много памяти независимо от размера отфильтрованного largeTable:
largeTable? Filter (Предикат)? Sequence [index]: FreeMarker будет просто извлекать и отбрасывать элементы, пока не достигнет элемента в желаемая позиция.
largeTable - фильтр (предикат) - последовательность [0..9]: FreeMarker просто соберет первые 10 элементов.
Пример:
<#assign a=[1,2,3,5,6]>
<#list a?filter(x -> x > 0)?sequence[1..4] as x>${x} </#list>