J'ai un modèle Freemarker qui contient un tas d'espaces réservés pour lesquels des valeurs sont fournies lorsque le modèle est traité. Je veux inclure conditionnellement une partie du modèle si la variable userName est fournie, quelque chose comme:
[#if_exists userName]
Hi ${userName}, How are you?
[/#if_exists]
Cependant, le manuel FreeMarker semble indiquer que if_exists est obsolète, mais je ne trouve pas d'autre moyen d'y parvenir. Bien sûr, je pourrais simplement fournir une variable booléenne supplémentaire isUserName et l'utiliser comme ceci:
[#if isUserName]
Hi ${userName}, How are you?
[/#if]
Mais s'il existe un moyen de vérifier si userName existe, je peux éviter d'ajouter cette variable supplémentaire.
java
templates
freemarker
Dónal
la source
la source
Celui-ci semble être un meilleur ajustement:
http://freemarker.sourceforge.net/docs/ref_builtins_expert.html
la source
Je pense aussi que if_exists a été utilisé comme:
qui ne cassera pas si userName est nul, le résultat si nul serait:
if_exists est désormais obsolète et a été remplacé par l'opérateur par défaut! un péché
l'opérateur par défaut prend également en charge une valeur par défaut, telle que:
la source
if
instruction comme op demandé.Je pense que beaucoup de gens veulent pouvoir vérifier si leur variable n'est pas vide ainsi que si elle existe. Je pense que vérifier l'existence et le vide est une bonne idée dans de nombreux cas, et rend votre modèle plus robuste et moins sujet aux erreurs stupides. En d'autres termes, si vous vérifiez que votre variable n'est pas nulle ET non vide avant de l'utiliser, votre modèle devient plus flexible, car vous pouvez y jeter une variable nulle ou une chaîne vide, et cela fonctionnera de la même manière dans tous les cas.
Disons que vous voulez vous assurer que ce
p
n'est pas seulement un espace blanc. Ensuite, vous pouvez le couper avant de vérifier si c'est le cashas_content
.METTRE À JOUR
Veuillez ignorer ma suggestion -
has_content
c'est tout ce qui est nécessaire, car il effectue une vérification nulle avec la vérification vide. Fairep?? && p?has_content
est équivalent àp?has_content
, donc vous pouvez tout aussi bien utiliserhas_content
.la source
Vous ne pouvez pas utiliser
??
pour gérer les valeurs manquantes, l'ancienne syntaxe est:la source