【问题标题】:Selecting multiple values from select tag - Grails从选择标签中选择多个值 - Grails
【发布时间】: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


【解决方案1】:

您的MME 是因为域类上的get() 一次只处理一个ID。对于来自您的 &lt;select/&gt; 使用的多个 ID。

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

params.list() 将始终将“validator.id”作为列表获取,即使只有一个,这将使您不必测试来自 &lt;select/&gt; 的单个结果还是多个结果。

【讨论】:

  • def operationLogInstance = new OperationLog(params) 我不得不删除这一行中的参数。谢谢@schmolly159
【解决方案2】:

根据此文档:http://www.grails.org/doc/1.3.7/ref/Tags/select.html 您的选择标签错误,应该是:

<g:select name="validator.id"
    multiple="multiple"
    optionKey="id"
    from="${com.project.Validator.list()}"
    value="${contact?.validators*.id}" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 2017-02-21
    • 2020-02-19
    • 2013-10-28
    • 2010-10-17
    • 2019-05-15
    相关资源
    最近更新 更多