テンプレートにFreeMarker sequence を作成しました:
<#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テンプレート言語は、シーケンス/ハッシュの変更をサポートしていません。データを計算するためではなく、すでに計算されたものを表示するためのものです。テンプレートはシンプルにしてください。しかし、それをあきらめないでください、あなたはいくつかのアドバイスとトリックを以下に見るでしょう。
Laurentの回答 は正しく、完全に受け入れ可能です。ただし、省略形を使用して値を追加することもできます。
<#assign x += ["green"]>
シーケンスは次のようになります。
Sequence (5)
0 = "red" (String)
1 = 16 (BigDecimal)
2 = "blue" (String)
3 = "cyan" (String)
4 = "green" (String)