从选择标记中选择多个值 - Grails [英] Selecting multiple values from select tag - Grails

查看:137
本文介绍了从选择标记中选择多个值 - Grails的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您能否请任何人告诉我如何从 $ b

 < g:select multiple =multiple获取多个值。 .. 

我在我的create.gsp中有这个

 < g:select name =validator.idmultiple =multipleoptionKey =idfrom =$ {com.project.Validator.list()} value =$ {validators}/> 

,这是在OperationLogContoller.groovy中。



<$ ()pre> 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' ,默认:'OperationLog'),operationLogInstance.id])}
}

我从select中选择了一个,它可以很好地工作,但如果选择两个,我会得到以下异常:

  groovy.lang。 MissingMethodException:没有方法的签名:com.akent.Validator.get()适用于参数类型:(java.lang.String,java.lang.String)values:[3,4] 
可能的解决方案:get (java.lang.Object),getId(),getIp(),getAt(java.lang.String),getAll(),ident()


解决方案 您的 MME 是因为 get() code>在Domain类上一次只能处理一个id。对于来自< select /> 的多个ID,请使用。

  def validators = Validator.getAll(params.list('validator.id'))

params.list()将始终以'List'的形式获取'validator.id',即使只有一个,这将使您无需测试单个或多个< c $ c>< select />


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()

解决方案

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'))

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆