web-dev-qa-db-fra.com

Comment vérifier la liste null dans freemarker

Dites que mon code Java a List<String> listS =null et que je le passe dans mon fichier de modèle.

Maintenant, je veux m'assurer que if list has some data then only do something

J'ai essayé

<#if listS = null>
AND
<#if !listS>
AND
<#if listS?size=0>

Mais aucun d'entre eux ne semble fonctionner. J'ai un peu de logique dans mon code Java; à travers lequel, si une condition est vraie, alors je new cette listS et la peupler. 

Par conséquent, j'ai besoin de savoir si la variable listS a été remplie ou si elle est nulle uniquement, dans mon fichier de modèle.

Comment puis-je faire cela? Merci.

EDIT: De plus, j’ai une liste de structures, chacune contenant cette liste (remplie ou non, est un problème différent), et je passe la liste complète de la structure, transmettant une valeur booléenne au fichier modèle avec ma liste Les structures ne sont pas possibles, car je devrai parcourir chaque liste, et ce parcours que je souhaite effectuer dans le fichier modèle lui-même.

EDIT 2: Pour ceux qui savent ce qu'est Java null, FreeMarker 2.3.x les traite comme des valeurs manquantes. Simplement, le modèle de langage ne connaît pas le concept de null. Par exemple, si vous avez un bean qui a une propriété maidenName et que la valeur de cette propriété est null, alors c'est la même chose que s'il n'y avait pas une telle propriété du tout, en ce qui concerne le modèle FreeMarker configuré pour utiliser un wrapper d’objets extrêmes, c’est-à-dire). Le résultat d'un appel de méthode qui renvoie null est également traité comme une variable manquante (à nouveau, en supposant que vous utilisiez un wrapper d'objet habituel). Voir plus dans la FAQ.

Freemarker Manual

Mais je n’ai toujours pas eu la réponse pour savoir comment le faire fonctionner, si possible.

34
Kraken

Utilisez le has_content built-in:

<#if list5?has_content>
58
Bohemian

Vous pouvez également utiliser l'opérateur de test valeur manquante , en tant que tel:

<#if listS??>
    <#list listS.stuff as stuff>
        ${stuff.value}
    </#list>
</#if>
7
Tarek
<#list myList![] as element>
   <#--  do something per element -->
</#list>

Si la liste est nulle ou vide, le résultat sera vide.

0
user712767