Як обробляти null
значення у Freemarker? Я отримую деякі винятки в шаблоні, коли null
значення присутні в даних.
Відповіді:
Ви можете використовувати ??
тестовий оператор:
Це перевіряє, чи не є атрибут об’єкта нульовим:
<#if object.attribute??></#if>
Це перевіряє, чи не є об'єкт або атрибут нульовим:
<#if (object.attribute)??></#if>
Джерело: Посібник FreeMarker
has_content
, поруч із перевіркою нуля, також перевіряє, чи не є значення порожнім. Це працює для рядків, послідовностей, хешів або колекцій. Якщо об’єктом є дата, логічне значення або число, тоді він діє як непустий. Для всіх інших типів він буде діяти як порожній.
Починаючи з Freemarker 2.3.7, ви можете використовувати такий синтаксис :
${(object.attribute)!}
або, якщо потрібно відобразити текст за замовчуванням, коли атрибут null
:
${(object.attribute)!"default text"}
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.22</version></dependency>
до вашого pom.xml.
${(object.dateAcquired?date)!"not present"}
${salutation!'Dear Mr. or Mrs.'}
Я думаю, це працює в інший бік
<#if object.attribute??>
Do whatever you want....
</#if>
Якщо object.attribute
значення НЕ НУЛЕВО, вміст буде надруковано.
Використовуйте ??
оператор у кінці <#if>
виписки.
Цей приклад демонструє, як обробляти null
значення для двох списків у шаблоні 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>