Comment créer un tableau en VTL et ajouter du contenu au tableau? Aussi comment récupérer le contenu du tableau par index?
Selon Apache Velocity User Guide , le côté droit des affectations peut être de type
Vous pouvez créer une liste vide, qui satisferait tous vos besoins pour un tableau, dans un modèle Apache Velocity avec une expression comme:
#set($foo = [])
ou initialiser des valeurs:
#set($foo = [42, "a string", 21, $myVar])
puis, ajoutez des éléments en utilisant la méthode Java add:
$foo.add(53);
$foo.add("another string");
mais attention, comme la méthode Java .add () pour le type de liste renvoie une valeur booléenne, lorsque vous ajoutez un élément à la liste, Velocity affichera, par exemple, "true" ou " false "basé sur le résultat de la fonction" add ".
Une solution simple consiste à affecter le résultat de la fonction d'ajout à une variable:
#set($bar = $foo.add(42))
Vous pouvez accéder aux éléments de la liste à l'aide des numéros d'index:
<span>$foo[1]</span>
L'expression ci-dessus montrerait une étendue avec le texte "une chaîne". Cependant, le moyen le plus sûr d'accéder aux éléments d'une liste est d'utiliser les boucles foreach.
La création d'un tableau est simple:
#set($array = [])
Mettre un élément dans un tableau est également facile:
$array.add(23)
Obtenir un élément d'un tableau dépend de votre version de Velocity. Dans Velocity 1.6, vous devez utiliser
$array.get($index)
Depuis Velocity 1.7, vous pouvez utiliser le formulaire classique:
$array[$index]
Je n'ai pas créé de tableau en VTL, mais passé des tableaux au contexte VTL et les ai utilisés. En VTL, vous ne pouvez pas récupérer le contenu d'un tableau par index, vous utilisez uniquement foreach, comme exemple ce code est copié à partir de mon script VTL de génération Dynamic SQL:
#foreach( $col in $Columns ) SUM($col.DBColumn) AS ''$col.Name''#if($velocityCount!=$Columns.Count), #end #end
Pour cette raison, nous ne pouvons pas non plus avoir de tableaux 2D. Lorsque j'avais besoin d'un tableau pour stocker 2 objets d'affilée, j'ai utilisé la solution de contournement pour définir une nouvelle classe et placer les objets de cette classe dans le tableau unidimensionnel.