从选择标签中选择多个值 - Grails
请问有人可以告诉我如何从中获取多个值吗?
<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()
Could you please anyone tell me how to get multiple values from
<g:select multiple="multiple" ...
I have this in my create.gsp
<g:select name="validator.id" multiple="multiple" optionKey="id" from="${com.project.Validator.list()}" value="${validators}" />
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])}"
}
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()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的
MME
是因为 Domain 类上的get()
一次只能处理一个 id。对于即使只有一个,
params.list()
也始终会以列表的形式获取“validator.id”,这将使您不必从测试单个结果与多个结果。选择/>
。Your
MME
is because theget()
on Domain classes only handles one id at a time. For multiple ids from your<select/>
use.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/>
.根据此文档: http://www.grails.org/ doc/1.3.7/ref/Tags/select.html 您的选择标签是错误的,应该是:
According to this docs: http://www.grails.org/doc/1.3.7/ref/Tags/select.html your select tag is wrong, it should be rather: