2017-01-09 4 views
0

私は最近ftlで作業を始めました。 #assignを使用してhasmapを作成しました。freemarker、更新する方法hasmap

このハッシュマップの値を更新するにはどうすればよいですか?

freemarkerにデータ構造(マップ、リストなど)が不変ですか?

<#assign hashMap1= { "name": "mouse", "price": 50 } > 
hashMap1.name = "cat"; // gives error 
<#assign hashMap1= hashMap1 + {"name": "cat"} /> // this works fine , but I don't like this approach. it gives false sense of adding keys where we are updating keys. 

私はここfreemarker builtinsを通過しようとしたが、これについての情報はありません。

答えて

1

実際には、FTLはデータ構造の変更をサポートしていません。 hashMap1 = hashMap1 + {"name": "cat"}では、既存のハッシュを更新していないので、新しいキーを含む新しいハッシュを作成しています。その理由から、私はまた、それが遅くなる(特にハッシュ結果になる)ので、何度もそれをやることをお勧めしません。

あなたが本当にテンプレートからMap -sを更新する必要がある場合は、テンプレートに本当のJava Mapを与え、そしてJavaのMap APIにアクセスするために?apiを使用する必要があります。

+0

他の回答であなたから与えられた参照を追加します。 http://freemarker.org/docs/app_faq.html#faq_modify_seq_and_map – k1133

関連する問題