velocity - studio - Velocidad, ¿cuál es la forma más eficiente de verificar si una cadena está vacía y no es nula?
velocity studio (3)
A menudo tengo casos en que un valor de cadena está ausente y / o vacío. ¿Es esta la mejor manera de probar esta condición?
#if( $incentive.disclaimer && $!incentive.disclaimer != '''' )
$incentive.disclaimer
#end
Desea la notación de referencia silenciosa: $! Incentive.disclaimer
Bla bla $!incentive.disclaimer.
Si $ incentive.disclaimer es nulo o "" , Velocity mostrará:
Bla bla .
Consulte la sección de la guía oficial: https://velocity.apache.org/engine/devel/user-guide.html#quiet-reference-notation
A veces necesitas #IF
El caso más común cuando quiere #if: su variable es solo una parte de un fragmento de texto más grande y no desea mostrarla si la variable está vacía. Entonces necesitas esto:
#if($incentive.disclaimer && !$incentive.disclaimer.empty)
Please read our incentive disclaimer:
$incentive.disclaimer
#end
Para los casos en que solo $!incentive.disclaimer
no se ajusta a http://wiki.apache.org/velocity/CheckingForNull sugiere una solución corta:
#if( "$!car.fuel" != "" )
Si solo desea que Velocity muestre el valor si existe, o no muestre nada si está ausente, una referencia silenciosa por sí sola hará el truco:
$!incentive.disclaimer
Si desea probar explícitamente el vacío, StringUtils de Apache Commons Lang puede ayudarlo. Primero agréguelo a su Contexto (referencia here ):
context.put("StringUtils", StringUtils.class);
Aunque si está en una versión anterior de Velocity, puede que no le guste la referencia de clase, por lo que puede agregar una instancia en su lugar:
context.put("StringUtils", new StringUtils());
Luego puedes llamar a su método isEmpty desde tu plantilla de Velocity:
#if($StringUtils.isEmpty($incentive.disclaimer))
## logic here...
#end
Si desea que los espacios en blanco se traten como vacíos, también hay un isBlank .