2017-01-09 5 views
0

Ich begann vor kurzem an ftl freemarker zu arbeiten. Ich habe eine Hashemap mit dem #assign erstellt.freemarker, Möglichkeiten, hasmap zu aktualisieren

Was ist die empfohlene Methode zum Aktualisieren der Werte dieser hashMap?

Sind die Datenstrukturen (Karte, Liste usw.) im Freemarker unveränderlich?

<#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. 

Ich habe versucht, hier durch freemarker builtins gehen, aber es gibt keine Informationen zu diesem Thema.

Antwort

1

FTL unterstützt das Ändern von Datenstrukturen nicht. (Es ist keine generische Skriptsprache, sondern nur eine Vorlagensprache.) Mit hashMap1 = hashMap1 + {"name": "cat"} aktualisieren Sie den vorhandenen Hash nicht, Sie erstellen einen neuen Hash, der den neuen Schlüssel enthält. Aus diesem Grund würde ich auch nicht empfehlen, es zu oft zu tun, da es langsam wird (besonders der resultierende Hash).

Wenn Sie wirklich Map es von Vorlagen aktualisieren müssen, haben Sie die Vorlage eine echte Java Map und ?api Java Map API für den Zugriff verwenden geben.

+0

Hinzufügen der Referenz von Ihnen in anderen Antwort gegeben. http://freemarker.org/docs/app_faq.html#faq_modify_seq_and_map – k1133