从选择标签中选择多个值 - Grails [英] Selecting multiple values from select tag - Grails
问题描述
你能告诉我如何从
<g:select multiple="multiple" ...
我的 create.gsp 中有这个
I have this in my create.gsp
<g:select name="validator.id" multiple="multiple" optionKey="id" from="${com.project.Validator.list()}" value="${validators}" />
这是在 OperationLogContoller.groovy 中
and this is in 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])}"
}
如果我只从 select 中选择一个,它可以完美运行,但如果我选择两个,我会得到以下异常:
If I select just one from select, it works perfectly but if I select two, I get the following exception:
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()
推荐答案
你的 MME
是因为域类上的 get()
一次只处理一个 id.对于 中的多个 id,请使用.
Your MME
is because the get()
on Domain classes only handles one id at a time. For multiple ids from your <select/>
use.
def validators = Validator.getAll(params.list('validator.id'))
params.list()
将始终获取 'validator.id' 作为列表,即使只有一个列表,这将使您不必测试 <选择/>
.
The params.list()
will always fetch 'validator.id' as a List even if there's only one, which will save you from having to test for single vs multiple results from your <select/>
.
这篇关于从选择标签中选择多个值 - Grails的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!