我有一个域对象类别,与域对象属性具有hasMany关系
class Category {
static hasMany = [attributes: Attribute]
...
}
我使用脚手架来生成一个多选框。
<g:select name="attributes" from="${Attribute.list()}" multiple="multiple" optionKey="id" size="5" value="${categoryInstance?.attributes*.id}" class="many-to-many"/>
我可以使用它来选择框以选择1,2,3等选项。
但是当选择了3个选项并且我选择了2个选项时,它将不会保存选项。它仍将具有之前选择的3个选项。从4个选项转到3个等时会发生同样的情况。
当我回到选择1选项时。一切都有效。
还有其他人有同样的问题吗?
这是一个知道错误吗? (我找不到了)
有解决方法吗?
答案 0 :(得分:0)
@Renso发布的解决方法在我只选择了1个选项时对我不起作用,它最终会将1个属性的每个字符迭代为it
,而不是作为id的单个字符串。这就是我考虑到这一点。
categoryInstance.attributes.clear()
if(params.attributes instanceof String) params.attributes = [params.attributes]
params.attributes.each { it -> categoryInstance.attributes.add(Attribute.findById(it as Long)) }