Un des principes de base d'implémentation du moteur Freemarker est que le modèle de données ne peut être accessible qu'en lecture. Il n'est pas possible de modifier une valeur issue d'un modèle de données lors de l'exécution d'un template. Une des conséquences concerne le type Sequence : Freemarker permet de créer de manière littérale un objet séquence mais, une fois créé, il n'est pas possible de modifier cet objet (cliquez ici pour plus de détails).
Exemple :
<#assign seqVal = [1, 2, 3, 4, 5] /> <#list seqVal as aVal>…</#list> ${seqVal[1]} <#-- Il est possible de parcourir les valeurs de seqVal ou d'acceder à un element de seqVal mais il n'est pas possible de modifier un élément de seqVal ou de supprimer un élément dans seqVal facilement --> <#-- Solution peu performante de modification d'un élément (élément en position 2 en partant de 0) --> <#assign seqVal = seqVal[0..(2-1)] + [33] + seqVal[(2+1)..]/> <#-- Solution peu performante de suppression d'un élément (élément en position 2 en partant de 0)--> <#assign seqVal = [1, 2, 3, 4, 5] /> <#assign seqVal = seqVal[0..(2-1)] + seqVal[(2+1)..]/>
Cette fonction retourne un objet de type Sequence qui possède des méthodes d'ajout / modification / suppression : cet objet est une encapsulation de l'objet Java ArrayList (cliquez ici pour plus de détails). Un certain nombre de méthodes de la classe ArrayList sont utilisable dans un contexte d'exécution Freemarker : add / clear / contains / ensureCapacity / get / indexOf / isEmpty / lastIndexOf / remove / removeRange / set / size / subList / toArray.
Paramètres
Aucun paramètre.
Par exemple
<#assign newSeq = hardisCore.createArrayList() /> <#-- Use sequence built-in function with newSeq variable --> Size of newSeq:${newSeq?size} <#-- Use Java ArrayList "compatible" methods with newSeq variable --> IsEmpty:${newSeq.isEmpty()} <#assign textToAdd = "Hello"/> <#assign addOK = newSeq.add(textToAdd) />