J'ai deux classes de domaine
<g:each in="${Statement.list()}" var="statement" status="i"> <g:checkBox name="statements[${i}].id" value="${statement.id}" checked="${contractInstance.statements.contains(statement.id)}" /> <label for="statements[${i}]">${statement.code}</label> </g:each>
4 Réponses :
Êtes-vous en mappage directement à Comme pour la mapper une liste - les valeurs sont mappées uniquement sur des éléments existants. Je veux dire que cela ne peut pas créer de nouveaux éléments de la liste. Vous devez la préparer avant la cartographie. Si vous savez qu'il y a toujours 3 éléments, vous pouvez faire: p> et la demande de carte à cet objet p> p> contrat code>? Il est beaucoup plus sûr de la cartographie de la carte entrante dans un objet de commande
code>.
Changez la case à cocher à quelque chose comme ça. , puis dans le contrôleur, dans remarquez également le Params.Statifs CODE> Vous obtiendrez une liste avec les identifiants de la vérité déclarations. p>
?: '' code> dans la propriété cochée, c'est une bonne idée de l'ajouter car une valeur (même "Faux") est interprétée dans la propriété enregistrée. comme vérifié. p> p>
Utilisation de cette approche (et vérifiant les instructions 3, 4 et 6), Params.Statifs CODE> ressemble à ceci:
Déclarations: [_ 3 :, _4 :, _6 :,1 :,1 :,1: :, 6: True, 4: True, true, true] code> et il ne lie pas à
contractnstance code>. Tout ce que je veux vraiment, c'est
param .statifs code> pour être
[3, 4, 6] code> dans ce cas.
Ceci est possible, mais cela nécessite un peu de hack. Tout d'abord, chaque case doit avoir le même nom, "Déclarations": def contract = Contract.get(params.id)
params.remove "_statements"
bindData contract, params
contract.save(failOnError: true)
parames.remove "_statifs" code> a fait le tour. J'ai toutefois écrit ma propre balise qui crée des cases à cocher sans le paramètre caché _.
Il est étrange que les cases à cocher utilisaient tous le même nom, mais cela a fonctionné pour moi!
Je préfère personnellement obtenir la liste des identifiants dans ce cas.
BookCommand bc -> author.books = Book.getAll(bc.bookIds)