FreeMarker - это язык с однократной записью. Он очень старается сделать невозможным манипулирование данными, включая изменение массивов или карт и т. Д.
Однако вы можете обойти эту проблему путем объединения и переназначения:
<#assign my_array = [] />
<#list 1..10 as i>
<#assign my_array = my_array + ["value " + i] />
</#list>
Это должно привести к массиву, содержащему от «значения 1» до «значения 10». Если это кажется не элегантным, это потому, что это было задумано именно так. С идеологической точки зрения FreeMarker, когда вы начали создавать массивы и т. Д., Вы перешли от того, что должен делать язык шаблонов, и к тому, что модели, контроллеры, вспомогательные классы и т. Д. Должны делать в коде Java. Работа в FreeMarker может сильно расстраивать вас по мере того, как вы отклоняетесь от этой точки зрения.
С http://freemarker.sourceforge.net/docs/app_faq.html#faq_modify_seq_and_map:
Язык шаблонов FreeMarkes не поддерживает модификацию последовательностей / хэшей. Это для отображения уже рассчитанных вещей, а не для расчета данных. Сохраняйте шаблоны простыми. Но не сдавайтесь, ниже вы увидите несколько советов и хитростей.