Wie null
gehe ich mit Werten in Freemarker um? Ich erhalte einige Ausnahmen in der Vorlage, wenn null
Werte in Daten vorhanden sind.
Antworten:
Sie können den ??
Testoperator verwenden:
Dies prüft, ob das Attribut des Objekts nicht null ist:
<#if object.attribute??></#if>
Dies prüft, ob Objekt oder Attribut nicht null ist:
<#if (object.attribute)??></#if>
Quelle: FreeMarker-Handbuch
has_content
prüft neben der Nullprüfung auch, ob der Wert nicht leer ist. Dies funktioniert für Zeichenfolgen, Sequenzen, Hashes oder Sammlungen. Wenn das Objekt ein Datum, ein Boolescher Wert oder eine Zahl ist, fungiert es als nicht leer. Bei allen anderen Typen wird es leer angezeigt.
Ab freemarker 2.3.7 können Sie folgende Syntax verwenden :
${(object.attribute)!}
oder, wenn Sie einen Standardtext anzeigen möchten, wenn das Attribut lautet null
:
${(object.attribute)!"default text"}
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.22</version></dependency>
zu Ihrer pom.xml.
${(object.dateAcquired?date)!"not present"}
${salutation!'Dear Mr. or Mrs.'}
Ich denke, es funktioniert andersherum
<#if object.attribute??>
Do whatever you want....
</#if>
Wenn object.attribute
NICHT NULL ist, wird der Inhalt gedruckt.
Verwenden Sie den ??
Operator am Ende Ihrer <#if>
Anweisung.
Dieses Beispiel zeigt, wie null
Werte für zwei Listen in einer Freemaker-Vorlage behandelt werden.
List of cars:
<#if cars??>
<#list cars as car>${car.owner};</#list>
</#if>
List of motocycles:
<#if motocycles??>
<#list motocycles as motocycle>${motocycle.owner};</#list>
</#if>