2017-01-09 6 views
0

Недавно я начал работу с ftl freemarker. Я создал hasmap, используя #assign.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 и использовать ?api для доступа Map API в Java.

+0

добавление ссылки, предоставленной вами в другом ответе. http://freemarker.org/docs/app_faq.html#faq_modify_seq_and_map – k1133

Смежные вопросы