J'ai un tableau Java tel que:
String[] arr = new String[] {"123","doc","projectReport.doc"};
À mon avis, le moyen naturel d’accéder serait:
#set($att_id = $arr[0])
#set($att_type = $arr[1])
#set($att_name = $arr[2])
Mais ça ne marche pas. Je suis venu avec cette solution de contournement. Mais c'est un peu trop de code pour une tâche aussi facile.
#set($counter = 0)
#foreach($el in $arr)
#if($counter==0)
#set($att_id = $el)
#elseif($counter==1)
#set($att_type = $el)
#elseif($counter==2)
#set($att_name = $el)
#end
#set($counter = $counter + 1)
#end
Y-a t'il une autre possibilité?
Vous pouvez utiliser Velocity 1.6: pour un tableau nommé $array
, vous pouvez simplement faire $array.get($index)
.
Dans le prochain Velocity 1.7, on pourra faire $array[$index]
(ainsi que $list[$index]
et $map[$key]
).
Vous pouvez envelopper le tableau dans un List
en utilisant Arrays.asList(T... a)
. Le nouvel objet List est sauvegardé par le tableau d'origine afin de ne pas allouer une copie de manière inutile. Même les modifications apportées à la nouvelle liste se répercuteront dans le tableau.
Ensuite, vous pouvez utiliser $list.get(int index)
pour obtenir vos objets dans Velocity.
Si vous ne devez extraire qu'un ou deux objets d'un tableau, vous pouvez également utiliser Array.get(Object array, int index)
Pour obtenir un élément d'un tableau.
il existe un compteur implicite $ velocityCount qui commence par la valeur 1, vous n'avez donc pas à créer votre propre compteur.
String[] arr = new String[] {"123", "doc", "projectReport.doc"};
À mon avis, le moyen naturel d’accéder serait:
#set($att_id = $arr[0])
#set($att_type = $arr[1])
#set($att_name = $arr[2])
La valeur de this peut être obtenue en utilisant $array.get("arr", 1)
car il n’existe aucun moyen direct d’obtenir la valeur d’un tableau comme $att_id = $arr[0]
en vélocité.
Esperons que ça marche :)
La réponse de Brian est en effet correcte, bien que vous souhaitiez peut-être savoir que la prochaine version de Velocity 1.6 prend directement en charge les tableaux; voir la documentation Velocity pour plus d'informations.
Velocity 1.6
$myarray.isEmpty()
$myarray.size()
$myarray.get(2)
$myarray.set(1, 'test')
J'ai la même question et il a été répondu sur un autre fil
#set ( $Page = $additionalParams.get('Page') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
#foreach($i in $Page.split(";"))
$Pages.add($i)
#end
#end
J'ai fini par utiliser le ListTool de Velocity-tools.jar. Il dispose de méthodes pour accéder aux éléments d'un tableau et obtenir sa taille.