J'utilise un GSP pour envoyer des emails basés sur le plugin MailService. La fermeture de sendMail passe (parmi d'autres) body(view:..., model:myModel)
Comment faire référence indirectement à une variable de modèle GSP Grails, par ex. via .get (...)
Je sais que je peux accéder à chaque élément de la carte myModel en utilisant simplement ${itemName}
dans le GSP. Cependant, comme je veux parfois construire le nom de l'objet dynamiquement comme 'item'+i
, j'ai besoin d'avoir une méthode environnante pour accéder à la variable.
J'ai déjà essayé ${model.get('item'+i)
, et ${params.get('item'+i)
, mais le modèle est nul et params est une carte vide. J'ai également essayé pageScope, mais bien que je puisse accéder à un élément via ${pageScope.itemName
, je ne peux pas utiliser ${pageScope.get('item'+i)}
parce que pageScope n'est pas une carte.
Il existe probablement plusieurs solutions pour résoudre ce problème; Je serais heureux d'un facile ;-). Une solution que je vois est de passer myModel comme seul paramètre et ensuite toujours utiliser myModel.get(...)
, mais cela signifierait que j'ai dû changer tous mes GSP existants pour toujours me référer à myModel au lieu d'accéder directement aux éléments (avec des noms fixes); donc s'il y a un moyen de ne pas avoir à changer le modèle transmis au SGP, ce serait mon préféré.
Si quelqu'un pouvait aussi dire quelques mots au sujet de la différence du modèle et params dans ce contexte, ce serait plus utile!
voir aussi http://grails.org/doc/latest/ref/Tag%20Libraries/pageScope.html –