Sélection de plusieurs valeurs de balise select - Graal
Pourriez vous s'il vous plaît quelqu'un me dire comment faire pour obtenir plusieurs valeurs de
<g:select multiple="multiple" ...
J'ai cela dans mon créer des.gsp
<g:select name="validator.id" multiple="multiple" optionKey="id" from="${com.project.Validator.list()}" value="${validators}" />
et c'est dans OperationLogContoller.groovy
def create = {
def operationLogInstance = new OperationLog()
operationLogInstance.properties = params
operationLogInstance.validator = Validator.get(params.validatorId)
operationLogInstance.operation = Operation.get(params.operationId)
return [operationLogInstance: operationLogInstance]
}
def save = {
def operationLogInstance = new OperationLog(params)
println(params.validator)
operationLogInstance.validator = Validator.get(params.validator.id);
if (operationLogInstance.save(flush: true))
flash.message = "${message(code: 'default.created.message', args: [message(code: 'operationLog.label', default: 'OperationLog'), operationLogInstance.id])}"
}
Si je n'en sélectionner qu'une de sélectionner, il fonctionne parfaitement, mais si je sélectionne deux, j'obtiens l'exception suivante:
groovy.lang.MissingMethodException: No signature of method: com.akent.Validator.get() is applicable for argument types: (java.lang.String, java.lang.String) values: [3, 4]
Possible solutions: get(java.lang.Object), getId(), getIp(), getAt(java.lang.String), getAll(), ident()
Vous avez besoin des validateurs pour être un un-à-plusieurs relation à l'appui de sauver plusieurs validateurs dans unique OperationLog.
merci pour la réponse rapide @ataylor mais ils sont déjà dans exactement la même relation Validateur.groovy:
merci pour la réponse rapide @ataylor mais ils sont déjà dans exactement la même relation Validateur.groovy:
static hasMany = [operationlog: OperationLog]
OperationLog.groovy: static belongsTo = [Validator]
OriginalL'auteur supp | 2011-12-12
Vous devez vous connecter pour publier un commentaire.
Votre
MME
est parce que leget()
sur les classes de Domaine ne gère qu'un seul id à la fois. Pour de multiples identifiants de votre<select/>
utilisation.La
params.list()
va toujours chercher validateur.id' comme une Liste, même si il n'y a qu'un seul, ce qui vous évitera d'avoir à tester pour de simples vs multiples résultats de votre<select/>
.def operationLogInstance = new OperationLog(params)
et j'ai dû supprimer params dans cette ligne. Merci @schmolly159OriginalL'auteur schmolly159
Selon cette docs: http://www.grails.org/doc/1.3.7/ref/Tags/select.html votre balise select est mauvais, il devrait être plutôt:
OriginalL'auteur Tomasz Kalkosiński