Я создал последовательность FreeMarker в своем шаблоне:
<#assign x = ["red", 16, "blue", "cyan"]>
Как добавить дополнительные значения в последовательность?
Я создал последовательность FreeMarker в своем шаблоне:
<#assign x = ["red", 16, "blue", "cyan"]>
Как добавить дополнительные значения в последовательность?
Вам нужно создать новую последовательность, объединив x
и последовательность, содержащую только новый элемент:
<#assign x = x + [ "green" ] />
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 не поддерживает модификацию последовательностей/хэшей. Это для отображения уже рассчитанных вещей, а не для вычисления данных. Храните шаблоны просто. Но не отчаивайтесь, вы увидите несколько советов и трюков.
Лоран ответ правильный и вполне приемлемый. Но вы также можете добавить значение, используя сокращение:
<#assign x += ["green"]>
Теперь последовательность будет выглядеть следующим образом:
Sequence (5)
0 = "red" (String)
1 = 16 (BigDecimal)
2 = "blue" (String)
3 = "cyan" (String)
4 = "green" (String)