Velocity et ignorer le retour de la méthode Java
-
20-08-2019 - |
Question
Je souhaite ajouter un élément à la liste dans ma macro Velocity. Est-ce le seul moyen d'éviter que le texte "vrai" n'apparaisse dans la sortie Velocity?
#set($path = [])
#set($swallow = "a")
#set ($swallow = $path.add("blaablaa"))
La solution
Je suis d'accord avec Terence Parr (père de StringTemplate ) qui a des commentaires pertinents dans une interview Artima et un bon article sur la séparation modèle-vue .
Les modèles doivent être limités à la présentation pure. Tout comme nous ne devrions pas inclure les détails de la couche de présentation dans le modèle, nous ne devrions pas inclure la manipulation de données dans nos modèles. Cela rend généralement la maintenance plus difficile et rend même plus difficile de savoir où effectuer la maintenance.
Sur la base de ma propre expérience avec Velocity et StringTemplate, je vous suggère fortement de prendre le problème de votre question (artefacts de la manipulation de données rendant le modèle plus compliqué) comme un indice et de déplacer toutes les manipulations de structures de données dans la couche Java. .
Autres conseils
Oui, si vous voulez la fermer, alors #set est votre ami. Beaucoup de gens raccourcissent cela avec une macro comme celle-ci:
#macro( call $this )#set( $stfu = $this )#end
Ensuite, vous pouvez abréger en
#call( $path.add('blaablaa') )