Ich habe eine Freemarker-Vorlage, die eine Reihe von Platzhaltern enthält, für die Werte angegeben werden, wenn die Vorlage verarbeitet wird. Ich möchte einen Teil der Vorlage bedingt einschließen, wenn die Variable userName angegeben wird, etwa:
[#if_exists userName]
Hi ${userName}, How are you?
[/#if_exists]
Das FreeMarker-Handbuch scheint jedoch darauf hinzuweisen, dass if_exists veraltet ist, aber ich kann keinen anderen Weg finden, um dies zu erreichen. Natürlich könnte ich einfach eine zusätzliche boolesche Variable isUserName bereitstellen und diese wie folgt verwenden:
[#if isUserName]
Hi ${userName}, How are you?
[/#if]
Wenn es jedoch eine Möglichkeit gibt, zu überprüfen, ob Benutzername vorhanden ist, kann ich das Hinzufügen dieser zusätzlichen Variablen vermeiden.
quelle
Dieser scheint besser zu passen:
http://freemarker.sourceforge.net/docs/ref_builtins_expert.html
quelle
Ich denke auch, dass if_exists wie folgt verwendet wurde:
Dies wird nicht unterbrochen, wenn userName null ist. Das Ergebnis, wenn null wäre, wäre:
if_exists ist jetzt veraltet und wurde durch den Standardoperator ersetzt! wie in
Der Standardoperator unterstützt auch einen Standardwert, z.
quelle
if
wie gewünscht in einer Anweisung verwendet werden.Ich denke, viele Leute wollen in der Lage sein zu überprüfen, ob ihre Variable nicht leer ist oder ob sie existiert. Ich denke, dass die Überprüfung auf Existenz und Leere in vielen Fällen eine gute Idee ist und Ihre Vorlage robuster und weniger anfällig für dumme Fehler macht. Mit anderen Worten, wenn Sie überprüfen, ob Ihre Variable nicht null UND nicht leer ist, bevor Sie sie verwenden, wird Ihre Vorlage flexibler, da Sie entweder eine Nullvariable oder eine leere Zeichenfolge hineinwerfen können und sie genauso funktioniert in beiden Fällen.
Angenommen, Sie möchten sicherstellen, dass dies
p
mehr als nur Leerzeichen sind. Dann können Sie es zuschneiden, bevor Sie prüfen, ob es vorhanden isthas_content
.AKTUALISIEREN
Bitte ignorieren Sie meinen Vorschlag -
has_content
ist alles, was benötigt wird, da es eine Nullprüfung zusammen mit der leeren Prüfung durchführt. Tunp?? && p?has_content
ist gleichbedeutend mitp?has_content
, also können Sie es auch einfach verwendenhas_content
.quelle
Sie können nicht verwenden
??
, um fehlende Werte zu behandeln. Die alte Syntax lautet:quelle