50 votes

Comment appeler des 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 à partir d'un template 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 permettra d'atteindre le résultat que vous souhaitez. Comment résoudre ce dans Freemarker? Est-ce la même chose avec l'écriture de fonctions personnalisées? Ou est-il un moyen de l'appel de ce genre de fonction?

45voto

ChssPly76 Points 53452

FreeMarker permet d'appeler des méthodes rendues disponibles via le modèle à partir d' expressions .

En supposant que votre objet a été exposé en tant que myBean vous pouvez invoquer 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 car votre méthode renvoie une liste.

24voto

monzonj Points 1791

Comme 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 renvoie NULL (pour quelque raison que ce soit), vous allez obtenir une confusion

Expression myBean.getunits() is undefined on line ....

Pour éviter cela, il est mieux d'utiliser myBean.getunits(...)! (notez le point d'exclamation).

En savoir plus sur la façon Freemarker poignées de valeurs null ici: http://freemarker.org/docs/dgui_template_exp.html#dgui_template_exp_missing

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X