Comment appeler les méthodes java sur un objet à partir d'un modèle FreeMarker?
est-il possible d'appeler une méthode qui prend des paramètres d'un modèle Freemarker?
j'ai un modèle d'objet que j'essaie de rendre avec Freemarker dans une page web. L'un des objets a une méthode pour obtenir une sous-liste de son contenu, en prenant un paramètre qui est utilisé pour filtrer la liste:
public List getunits(final String type);
je sais que dans JSP vous ne pouvez pas faire cela directement, mais vous pouvez écrire des fonctions personnalisées qui vous permettront d'atteindre le résultat que vous voulez. Comment faites-vous résoudre ça à Freemarker? Est-ce la même chose avec l'écriture de fonctions personnalisées? Ou y a-t-il un moyen d'appeler ce genre de fonction?
2 réponses
FreeMarker permet d'invoquer des méthodes qui ont été rendues disponibles par le modèle à partir de expressions.
en Supposant que votre objet a été exposé myBean
vous pouvez appeler la méthode comme suit:
<#list myBean.getunits("myType") as unit>
do stuff with ${unit}
</#list>
Vous n'avez pas à utiliser <list>
, bien sûr, c'est juste là comme exemple puisque votre méthode retourne une liste.
ChssPly76 dit, vous pouvez simplement lancer l'appel de méthode à partir de dans un le template Freemarker, aussi longtemps que vous exposer l'objet dans le modèle.
mais il est important de garder à l'esprit que si votre méthode retourne NULL (pour quelque raison que ce soit), vous allez avoir une confusion
Expression myBean.getunits() is undefined on line ....
pour éviter cela, vous devriez mieux utiliser myBean.getunits(...)!
(notez le point d'exclamation).
pour en savoir plus sur la façon dont Freemarker gère les nulls, Cliquez ici: http://freemarker.org/docs/dgui_template_exp.html#dgui_template_exp_missing