web-dev-qa-db-fra.com

en vitesse pouvez-vous parcourir un Java hashmap's set d'entrée ()?

Pouvez-vous faire quelque chose comme ça dans un modèle de vitesse?

#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
    <name>$mapEntry.key()</name>
    <value>$mapEntry.value()</value>
#end

il génère des balises vides comme ceci:

<name></name> 

et

<value></value> 

Qu'est-ce que je fais mal?

41
Ayrad

Votre erreur fait référence à clé et valeur en tant que méthodes (avec une parenthèse "()") au lieu de propriétés. Essaye ça:

#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
    <name>$mapEntry.key</name>
    <value>$mapEntry.value</value>
#end

En d'autres termes, utilisez soit une propriété, comme mapEntry.key, ou la méthode, comme mapEntry.getKey ().

101
Yoni

Je cherche un moyen de parcourir un HashMap en vitesse, et cela fonctionnera aussi.

#set ($map = $myobject.getMap())
#foreach( $key in $map.keySet())
      <name>$key</name>
      <value>$resume.get($key)</value>
#end

Tout comme la façon dont vous parcourriez un HashMap en Java.

5
Allan Ruin

Pour clarifier (je ne peux pas commenter), en général, vous pouvez utiliser les méthodes Java get, ou les remplacer par le nom correspondant sans une petite lettre et sans ().

Donc $mapEntry.getKey() ou map.key.

1
Vincent Gerris

Ici la valeur

itemsValue={data1=1,data2=2,data3=3}

Nous devons donc itérer le groupe de valeurs;

foreach ($key in ${itemsValue.keySet()})
   if($itemsValue.get($key)==1)
        Condition
   end
end

Dans le code ci-dessus, nous pouvons voir que la valeur sera comme - "data1, data2 etc ..." mais après avoir utilisé get (), nous pouvons obtenir la valeur de l'instance.

0
user7490061