我有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()
方法?
答案 0 :(得分:0)
这是因为params.groups.id
在多个选择控件中返回了一组选定的组,在本例中为“[2, 3]
”。 使用getAll方法代替get方法。 getAll支持数组参数。