Velocity-Template-engine - Schlüssel-Wert-Karte
Ich habe einige Probleme wo verwenden Sie einen Schlüssel-Wert-anzeigen in Geschwindigkeit.
Jemand ein Beispiel für diese Funktionalität?
$myMap ={}
$myMap.put("mykey1", "myvalue")
$myMap.delete("mykey1")
$myMap.getValue("mykey1")
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Nathan sagte, Sie sollten verwenden:
eine neue Karte erstellen und es einer Variablen zuweisen.
Nun, warum ist das
put
rufen gedruckt.Alles, was nicht in eine Richtlinie, wie
#set(not printed)
oder#if(not printed)
oder#foreach(again not printed)
, gedruckt, einschließlich kostenlosem text -, Variablen-und Methodenaufrufe.Geschwindigkeit kann nicht unterscheiden zwischen
$myMap.get('mykey')
und$myMap.put('key', 'value')
, so das Ergebnis derput
Aufruf gedruckt wird.Immer, wenn etwas nicht richtig beurteilt werden, weil eine variable nicht definiert ist oder irgendwo entlang der Linie a-Methode gibt
null
, der code konnte nicht ausgewertet werden, der ausgegeben wird wörtlich in die Ausgabe.Als die Dokumentation der
put
Methode, Staaten, die Funktion gibt den vorherigen gespeicherten Wert für diesen Schlüssel besitzen, odernull
wenn kein Wert festgelegt wurde, bei allen.Summieren Sie alle auf, es normal zu bekommen, dass die Zeile gedruckt.
Versuchen, diese Theorie aus, Sie können dies tun:
Diese gedruckt werden:
Gibt es zwei Dinge, die Sie tun können, damit die Zeile nicht gedruckt:
Speichern Sie das Ergebnis der Funktion in eine temporäre variable:
#set ($discard = $myMap.put('key', 'value')
Verwenden Sie die silent-Methode aufrufen:
$!myMap.put('key', 'value')
Ich empfehle die erste, da der zweite wird noch etwas drucken, wenn Sie ersetzt einen bestehenden Wert.
Haben Sie zu tun versuchen:
Also, stellen Sie sicher, dass Sie eine moderne version von Velocity. Alten nicht anzeigen syntax in VTL.