2017-01-09 19 views
0

最近我开始在ftl freemarker上工作。 我使用#assign创建了一个hasmap。freemarker,更新hasmap的方法

什么是推荐的方式来更新这个hashMap的值?

数据结构(地图,列表等)在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,并使用?api访问Java的API Map

+0

添加您在其他答案中给出的参考。 http://freemarker.org/docs/app_faq.html#faq_modify_seq_and_map – k1133