Comment vérifier la liste nulle dans freemarker

Disons que mon code java a List<String> listS =null et je le passe à 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 de ceux-ci ne semble fonctionner. J'ai une certaine logique i mon code java; à travers lequel, si une condition est vraie, alors je new CE listS et le remplir.

Donc j'ai besoin de savoir si la listS a été rempli ou est null seulement, dans mon fichier de modèle.

Comment faire? Grâce.

EDIT: aussi, j'ai une liste de Structures, chacune contenant ces listes, (peuplée ou non est un problème différent), et je passe toute la liste de structure, donc passer une valeur booléenne au fichier de modèle avec ma liste de Structures n'est pas possible, car je devrai traverser dans chaque liste, et cette traversée que je veux faire dans le fichier de 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 langage de modèle 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é, en ce qui concerne le modèle (en supposant que vous N'avez pas configuré FreeMarker pour utiliser un wrapper d'objet extrême, c'est-à-dire). Le résultat d'un appel de méthode qui renvoie null est également traité comme une variable manquante (encore une fois, en supposant que vous utilisez un wrapper d'objet habituel). Voir plus dans la FAQ.

Freemarker Manuel

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

33
demandé sur Kraken 2012-09-24 16:45:53

3 réponses

Utilisez le has_content intégré:

<#if list5?has_content>
56
répondu Bohemian 2012-09-24 13:04:47

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>
6
répondu Tarek 2013-04-04 18:34:24
<#list myList![] as element>
   <#--  do something per element -->
</#list>

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

0
répondu user712767 2018-02-16 03:11:54