Tengo una plantilla de Freemarker que contiene un montón de marcadores de posición para los que se proporcionan valores cuando se procesa la plantilla. Quiero incluir condicionalmente parte de la plantilla si se proporciona la variable userName, algo así como:
[#if_exists userName]
Hi ${userName}, How are you?
[/#if_exists]
Sin embargo, el manual de FreeMarker parece indicar que if_exists está en desuso, pero no puedo encontrar otra forma de lograrlo. Por supuesto, podría simplemente proporcionar una variable booleana adicional isUserName y usarla así:
[#if isUserName]
Hi ${userName}, How are you?
[/#if]
Pero si hay una manera de verificar si userName existe, entonces puedo evitar agregar esta variable adicional.
java
templates
freemarker
Dónal
fuente
fuente
Este parece encajar mejor:
http://freemarker.sourceforge.net/docs/ref_builtins_expert.html
fuente
También creo que if_exists se usó como:
que no se romperá si userName es nulo, el resultado si nulo sería:
¡if_exists ahora está en desuso y ha sido reemplazado por el operador predeterminado! como en
el operador predeterminado también admite un valor predeterminado, como:
fuente
if
declaración según lo solicitado.Creo que muchas personas quieren poder verificar si su variable no está vacía y si existe. Creo que verificar la existencia y el vacío es una buena idea en muchos casos, y hace que su plantilla sea más robusta y menos propensa a errores tontos. En otras palabras, si verifica para asegurarse de que su variable no sea nula Y no esté vacía antes de usarla, entonces su plantilla se vuelve más flexible, porque puede arrojar una variable nula o una cadena vacía, y funcionará igual en cualquier caso.
Digamos que quiere asegurarse de que
p
sea más que solo un espacio en blanco. Luego puede recortarlo antes de verificar si estáhas_content
.ACTUALIZAR
Ignore mi sugerencia:
has_content
es todo lo que se necesita, ya que hace un cheque nulo junto con el cheque vacío. Hacerp?? && p?has_content
es equivalente ap?has_content
, por lo que también puedes usarlohas_content
.fuente
No puede usar
??
para manejar valores perdidos, la sintaxis anterior es:fuente