Est-il possible d'appeler une méthode qui prend des paramètres à partir 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 le faire directement, mais vous pouvez écrire des fonctions personnalisées qui vous permettront d'obtenir le résultat souhaité. Comment résolvez-vous cela dans Freemarker? Est-ce la même chose avec l'écriture de fonctions personnalisées? Ou existe-t-il un moyen d'appeler réellement ce genre de fonction?
FreeMarker permet d'appeler des méthodes qui ont été rendues disponibles via le modèle depuis l'intérieur expressions .
En supposant que votre objet a été exposé en tant que myBean
, vous pouvez appeler la méthode comme suit:
<#list myBean.getunits("myType") as unit>
do stuff with ${unit}
</#list>
Vous n'êtes pas obligé d'utiliser <list>
, bien sûr, c'est juste là à titre d'exemple puisque votre méthode retourne une liste.
Comme ChssPly76 l'a dit, vous pouvez simplement effectuer l'appel de méthode à partir d'un modèle Freemarker, tant que vous exposez l'objet dans le modèle.
Mais il est important de garder à l'esprit que si votre méthode retourne NULL (pour une raison quelconque), vous obtiendrez une confusion
Expression myBean.getunits() is undefined on line ....
Pour éviter cela, vous devriez mieux utiliser myBean.getunits(...)!
(notez le point d'exclamation).
En savoir plus sur la façon dont Freemarker gère les valeurs nulles ici: http://freemarker.org/docs/dgui_template_exp.html#dgui_template_exp_missing