FreeMarker,更新HashMap的方法

3

最近我开始学习使用ftl freemarker。我使用 #assign 创建了一个hashMap。

更新这个hashMap的值有什么推荐的方法吗?

在freemarker中,数据结构(如map、list等)是否是不可变的?

<#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内置函数中找到相关信息,但没有。

1个回答

3

FTL实际上不支持修改数据结构。(它不是通用的脚本语言,只是一种模板语言。)使用hashMap1 = hashMap1 + {"name": "cat"}并非更新现有的哈希表,而是创建一个包含新键的新哈希表。因此,我也不建议多次这样做,因为它会变得很慢(特别是结果哈希表)。

如果你真的需要从模板更新Map,你必须给模板一个真正的JavaMap,并使用?api访问Java的Map API。


在其他答案中提供的引用中添加 http://freemarker.org/docs/app_faq.html#faq_modify_seq_and_map。 - k1133

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接