2009-09-28 3 views
1

J'ai g: sélectionner à mon avis qui affiche une liste de produits:Comment configurer et récupérer la valeur d'un g: select in Grails?

<g:form name="addproductform" action="saveProductToInventory" method="post"> 
    <g:select from="${products}" name="product" value="${it?.id}" /> 
    <g:hiddenField name="inventory.id" value="${inventoryInstance.id}" /> 
    <input class="save" type="submit" value="Save product" /> 
</g:form> 

$ {} produits est une liste de tous les produits. Si j'imprime la variable params qui est transmis au contrôleur, je reçois ceci:

[produit: Test stock produit, : [id: 1], inventory.id:1 action : saveProductToInventory, contrôleur: inventaire]

le produit clé contient le nom, et non l'ID que je pensais que ce contiendrait quand je la valeur ajoutée = « $ {il .id?} » à g: balise select.

Comment dois-je déclarer la balise g: select pour afficher le nom du produit tel qu'il est actuellement, mais transmettre l'ID du produit en tant que valeur?

Répondre

1

Vous devez utiliser l'argument optionKey pour l'étiquette.

par exemple.

<g:select from="${products}" name="product" value="${it?.id}" optionKey="id" /> 

La valeur arg est utilisée pour sélectionner la valeur actuelle du champ.

+0

Essayé, et cela fonctionne. Merci! Mais avant cela, j'ai essayé avec optionKey = "$ {it? .id}" et cela m'a donné les mêmes résultats qu'avant. Je ne suis pas sûr de comprendre comment g: select sait obtenir l'identifiant de chaque produit, au lieu d'essayer d'obtenir l'identifiant de la liste elle-même. – Cesar

+0

g: select l'appelle. pour vous sur chaque ligne pour générer la valeur de l'option de sélection. – leebutts

Questions connexes