Comment référencer une variable de modèle SGP de Grails indirectement par exemple via .get (...)

StackOverflow https://stackoverflow.com/questions/3810844

Question

Je suis sur un GSP pour envoyer des e-mails basés sur le plug-in MailService. La fermeture passe sendmail (entre autres) body(view:..., model:myModel)

Je sais que je peux accéder à tous les éléments de la carte myModel juste en utilisant ${itemName} dans le SPG. Cependant, comme je veux parfois construire le nom de l'élément dynamique comme 'item'+i, je dois avoir une méthode autour pour accéder à la variable.

Je l'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 aussi essayé PAGESCOPE, mais si je peux accéder à un élément via ${pageScope.itemName, je ne peux pas utiliser ${pageScope.get('item'+i)} parce PAGESCOPE n'est pas une carte.

Il y a probablement plusieurs solutions pour résoudre ce; Je serais heureux au sujet facile ;-). Une solution que je vois est de passer myModel comme le seul paramètre puis utilisez toujours myModel.get(...), mais cela voudrait dire que je devais changer tous mes existants GSP toujours se référer myModel au lieu d'accéder à des articles (avec des noms fixes) directement; donc s'il y a un moyen où je ne dois pas changer le modèle passé au SGP, ce serait mon préféré.

Si quelqu'un pourrait aussi dire quelques mots au sujet de la différence du modèle et params dans ce contexte, ce serait plus utile!

Était-ce utile?

La solution

Je l'ai réussi à l'aide maintenant ${pageScope.getProperty(...)}.

Autres conseils

Il n'y a pas portée « modèle » ou variable. Au lieu de cela les objets de la carte du modèle sont définies comme demander des attributs pour les mettre à la disposition du SPG. Ceci est une caractéristique de ressort qui le rend facile d'accéder à des variables en utilisant JSTL et JSPs depuis la syntaxe GSP est très similaire à JSTL il fonctionne de la même manière Grails.

Vous pouvez utiliser ceci:

${request.getAttribute('item'+i)}

pour accéder aux variables du modèle en utilisant des noms dynamiques.

Vous pouvez utiliser ${fieldValue(bean: book, field: 'title')}

Voir: http://grails.github.io/ Grails-doc / latest / ref / tags / fieldValue.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top