我有一个Contact Domain类,可以与多个组织关联,这些组织也是域类。我想使用多选框来允许用户选择与当前联系人关联的组织。选择框中填充了可用的组织。如何将所选项目分配到我的Contact类中的组织列表?
<g:select name="organizations.id"
multiple="multiple"
optionKey="id"
from="${com.ur.Organization.list()}"
value="${contact?.organizations}" />
以上是我目前正在尝试的内容,虽然它确实填充了组织的选择,但它似乎并未将所选项目放在我的组织字段中。
感谢您的任何建议。
编辑: 来自krsjunk和omarello的评论。
这是域类的缩写版本。
class Contact{
static searchable = true
static mapping = {
sort "lastName"
}
String firstName
String lastName
.
.
.
static belongsTo = [organizations:Organization, projects:Project]
}
class Organization {
static searchable = true
static mapping = {
sort "name"
}
String name
static hasMany = [contacts:Contact]
}
答案 0 :(得分:5)
好吧,只需将名称更改为
即可<g:select name="organizations" multiple="multiple"
optionKey="id"
from="${com.ur.Organization.list()}"
value="${contact?.organizations}" />
应该正常工作,只是尝试过。
注意我的域名定义如下所示(以防万一你有不同的
)class Contact {
static constraints = {
}
static hasMany = [organizations:Organization]
String name
}
class Organization {
static constraints = {
}
static hasMany = [contacts:Contact]
static belongsTo = [Contact]
String name
}
答案 1 :(得分:1)
一个问题是value="contact?.organizations"
应该是value="${contact?.organizations}"
- 不确定这是否是整个问题。 (另外,如果value是集合,则不需要属性multiple=".."
)
您可能还需要name="contact.organizations"
为name="contact.organizations.id"
,其他属性为optionKey="id"
答案 2 :(得分:0)
在新编辑的域示例中,您在联系人和组织之间没有一对多的关系。您有来自组织的一对多联系人。
所以
value="${contact?.organizations}"
将始终是单个项目,绝不是列表。
尝试为联系人选择/分配多个组织永远无效。