¿Cómo manejar los null
valores en Freemarker? Recibo algunas excepciones en la plantilla cuando los null
valores están presentes en los datos.
Respuestas:
Puede utilizar el ??
operador de prueba:
Esto verifica si el atributo del objeto no es nulo:
<#if object.attribute??></#if>
Esto verifica si el objeto o atributo no es nulo:
<#if (object.attribute)??></#if>
Fuente: FreeMarker Manual
has_content
, junto a la comprobación de nulos, también comprueba si el valor no está vacío. Esto funciona para cadenas, secuencias, hashes o colecciones. Si el objeto es una fecha, un booleano o un número, entonces actúa como no vacío. Para todos los demás tipos, actuará como vacío.
A partir de freemarker 2.3.7, puede utilizar esta sintaxis :
${(object.attribute)!}
o, si desea mostrar un texto predeterminado cuando el atributo es null
:
${(object.attribute)!"default text"}
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.22</version></dependency>
a su pom.xml.
${(object.dateAcquired?date)!"not present"}
${salutation!'Dear Mr. or Mrs.'}
Creo que funciona al revés
<#if object.attribute??>
Do whatever you want....
</#if>
Si object.attribute
NO es NULO, se imprimirá el contenido.
Utilice el ??
operador al final de su <#if>
estado de cuenta.
Este ejemplo demuestra cómo manejar null
valores para dos listas en una plantilla de 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>