Velocity, Quelle est la façon la plus efficace de vérifier si une chaîne est vide et non nulle

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
24
demandé sur rsturim 2012-10-31 16:54:32

3 réponses

si vous voulez simplement que Velocity affiche la valeur si elle existe, ou rien si elle est absente, a calme de référence par lui-même fera l'affaire:

$!incentive.disclaimer

Si vous êtes désireux explicitement test de vide, StringUtilsApache Commons Lang peut aider. D'abord l'ajouter à votre Contexte (référence ici):

context.put("StringUtils", StringUtils.class);

bien que si vous êtes sur une ancienne version de Velocity, il peut ne pas aimer la référence de classe, donc vous pouvez ajouter une instance à la place:

context.put("StringUtils", new StringUtils());

alors vous pouvez appeler son isEmpty méthode de votre Vitesse modèle:

#if($StringUtils.isEmpty($incentive.disclaimer))
    ## logic here...
#end

si vous voulez que whitespace soit considéré comme vide, il y a aussi isBlank.

35
répondu Evan Haas 2012-10-31 14:35:51

Pour les cas où $!incentive.disclaimer ne convient pas http://wiki.apache.org/velocity/CheckingForNull suggère un court de solution:

#if( "$!car.fuel" != "" )
26
répondu Vadzim 2012-11-29 15:50:37

Vous souhaitez Calme Notation de Référence: $!incitation.avertissement

Bla bla $!incentive.disclaimer. 

Si $d'incitatif.avertissement null ou "", la Vitesse de rendu:

Bla bla .

voir la section du Guide officiel: https://velocity.apache.org/engine/devel/user-guide.html#quiet-reference-notation

Parfois, vous avez besoin d' #si

cas le plus commun quand vous voulez #if: votre variable n'est qu'une partie d'un plus gros morceau de texte et que vous ne voulez pas l'afficher si la variable est vide. Ensuite, vous avez besoin de ceci:

#if($incentive.disclaimer && !$incentive.disclaimer.empty) 
    Please read our incentive disclaimer:
    $incentive.disclaimer
#end
13
répondu DenisS 2017-01-18 18:07:11