J'ai souvent des cas où une valeur de chaîne est absente et/ou vide. Est-ce la meilleure façon de tester cette condition?
#if( $incentive.disclaimer && $!incentive.disclaimer != '' )
$incentive.disclaimer
#end
Si vous voulez simplement que Velocity affiche la valeur s'il y en a, ou n'affiche rien s'il est absent, un référence silencieuse suffira à lui seul:
$!incentive.disclaimer
Si vous voulez tester explicitement le vide, StringUtils from Apache Commons Lang peut vous aider. Ajoutez-le d'abord à votre contexte (référence ici ):
context.put("StringUtils", StringUtils.class);
Bien que si vous utilisez une ancienne version de Velocity, elle n'aimera peut-être pas la référence de classe, vous pouvez donc ajouter une instance à la place:
context.put("StringUtils", new StringUtils());
Ensuite, vous pouvez appeler sa méthode isEmpty à partir de votre modèle Velocity:
#if($StringUtils.isEmpty($incentive.disclaimer))
## logic here...
#end
Si vous voulez que les espaces soient traités comme vides, il y a aussi isBlank .
Pour les cas où simplement $!incentive.disclaimer
ne convient pas http://wiki.Apache.org/velocity/CheckingForNull suggère une solution courte:
#if( "$!car.fuel" != "" )
Bla bla $!incentive.disclaimer.
Si $ incentive.disclaimer est null ou "" , Velocity rendra:
Bla bla .
Reportez-vous à la section Guide officielle: https://velocity.Apache.org/engine/devel/user-guide.html#quiet-reference-notation
Cas le plus courant lorsque vous voulez #if: votre variable n'est qu'une partie d'un plus gros morceau de texte et vous ne voulez pas l'afficher si la variable est vide. Ensuite, vous en avez besoin:
#if($incentive.disclaimer && !$incentive.disclaimer.empty)
Please read our incentive disclaimer:
$incentive.disclaimer
#end