【发布时间】:2012-01-18 14:21:36
【问题描述】:
谁能告诉我如何从中获取多个值
<g:select multiple="multiple" ...
我的 create.gsp 中有这个
<g:select name="validator.id" multiple="multiple" optionKey="id" from="${com.project.Validator.list()}" value="${validators}" />
这是在 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 中只选择一个,它会完美运行,但如果我选择两个,我会收到以下异常:
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()
【问题讨论】:
-
您需要验证器是一对多的关系,以支持在单个 OperationLog 中保存多个验证器。
-
感谢@ataylor 的快速回复,但他们已经处于完全相同的关系 Validator.groovy:
static hasMany = [operationlog: OperationLog]OperationLog.groovy: @987654326 @
标签: grails groovy springsource