Jak obsługiwać null
wartości w Freemarker? W szablonie null
pojawiają się wyjątki, gdy wartości są obecne w danych.
Odpowiedzi:
Możesz użyć ??
operatora testu:
Sprawdza, czy atrybut obiektu nie jest pusty:
<#if object.attribute??></#if>
Sprawdza, czy obiekt lub atrybut nie jest pusty:
<#if (object.attribute)??></#if>
Źródło: Podręcznik FreeMarker
has_content
, obok sprawdzania wartości null, sprawdza również, czy wartość nie jest pusta. Działa to w przypadku ciągów, sekwencji, skrótów lub kolekcji. Jeśli obiekt jest datą, wartością logiczną lub liczbą, to zachowuje się jak niepusty. W przypadku wszystkich innych typów będzie działać jako pusty.
Począwszy od freemarker 2.3.7, możesz użyć następującej składni :
${(object.attribute)!}
lub, jeśli chcesz wyświetlić domyślny tekst, gdy atrybut to null
:
${(object.attribute)!"default text"}
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.22</version></dependency>
do twojego pom.xml.
${(object.dateAcquired?date)!"not present"}
${salutation!'Dear Mr. or Mrs.'}
Myślę, że to działa w drugą stronę
<#if object.attribute??>
Do whatever you want....
</#if>
Jeśli object.attribute
NIE jest NULL, zawartość zostanie wydrukowana.
Użyj ??
operatora na końcu <#if>
wyciągu.
Ten przykład pokazuje, jak obsługiwać null
wartości dla dwóch list w szablonie Freemaker.
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>