我正在开发一个使用多选字段的项目。
我的域类定义为:
class RoomWanted{
Set<MateAgeRange> mateAgeRanges
}
然后:
public enum MateAgeRange {
TWENTIES('18-29')
,THIRTIES('30-39')
,FOURTIES("40-49")
,FIFTIES("50-59")
,SIXTIES("60+")
final String value
private MateAgeRange(String value) {
this.value = value
}
String toString() { value }
String getKey() { name() }
static belongsTo=[roomWanted:RoomWanted]
}
我的命令对象是:
class RoomWantedDetailsCommand implements Serializable {
Set<MateAgeRange> mateAgeRanges
}
我想要创建页面,编辑页面,显示页面
这是我的创建页面
<g:select name="mateAgeRanges" multiple="true" from="${MateAgeRange?.values()}" optionKey="key" />
我的命令对象&#39; cmd&#39;得到值
print cmd.mateAgeRanges
给出了价值 [30-39,50-59]当我选择这两个。
但它不绑定到域类中的字段。 在节目页面中, 如果我使用 cmd.mateAgeRanges 它返回[]。
答案 0 :(得分:1)
域类应定义为:
class RoomWantedDetailsCommand implements Serializable {
Set<MateAgeRange> mateAgeRanges
static hasMany = [ mateAgeRanges:MateAgeRange ]
}
枚举定义为:
public enum MateAgeRange {
TWENTIES('18-29')
,THIRTIES('30-39')
,FOURTIES("40-49")
,FIFTIES("50-59")
,SIXTIES("60+")
final String value
private MateAgeRange(String value) {
this.value = value
}
String toString() { value }
String getKey() { name() }
static belongsTo=[roomWanted:RoomWanted]
}
在编辑页面中:
<g:select name="mateAgeRanges" multiple="true" from="${MateAgeRange?.values()}" optionKey="key" value="${roomWanted?.mateAgeRanges}"/>
在展会页面中: $ {roomWanted?.mateAgeRanges}
在创建页面中
答案 1 :(得分:0)
将hasMany添加到您的RoomWanted
类
class RoomWanted{
Set<MateAgeRange> mateAgeRanges
static hasMany = [ mateAgeRanges:MateAgeRange ]
}
如果你不这样做,GORM不会以全自动方式填写这个关联。
然后您应该使用roomWanted.addToMateAgeRanges(..)
填写值