从grails中的select标签中选择多个值

时间:2011-07-27 09:30:46

标签: grails

我有2个域类,如下所示

class User
 {
  String userId
  String userName
  SsGroups groups
  **static hasMany = [groups:SsGroups]
  static belongsTo=SsGroups**
  }

 class SsGroups
  {
  String groupId
  **static hasMany = [users:User]**

  }

我实现了多对多的关系,它运行良好而且很好。现在我想从 SsGroups 中选择多个组到一个用户,这里是用户,create.gsp

<g:select name="groups.id" multiple="yes" from="${app.SsGroups.list()}"  optionKey="id"   value="${userInstance?.groups?.id}"  />

但保存时有一个错误说 错误500:执行控制器[app.UserController]的操作[save]导致异常:groovy.lang.MissingMethodException:没有方法签名:app.SsGroups.get()适用于参数类型:(java.lang.String,java .lang.String)values:[2,3]可能的解决方案:get(java.lang.Object),getId(),getAt(java.lang.String),list(),getAll(),getLog()。 请你指导我如何选择多个值并存储这些值?

此控制器用户:

def save = {
    def userInstance = new User(params)
    if (userInstance.save(flush: true)) {
        flash.message = "${message(code: 'default.created.message', args: [message(code: 'user.label', default: 'User'), userInstance.id])}"
        redirect(action: "show", id: userInstance.id)
    }

其中没有get()方法。我需要在哪里编写getAll()方法?

1 个答案:

答案 0 :(得分:0)

这是因为params.groups.id在多个选择控件中返回了一组选定的组,在本例中为“[2, 3]”。 使用getAll方法代替get方法。 getAll支持数组参数。