从3个选项转到2个选项时,Grails multi-select不保存选项
我有一个与域对象属性有很多关系的域对象类别从3个选项转到2个选项时,Grails multi-select不保存选项,grails,has-many,multi-select,Grails,Has Many,Multi Select,我有一个与域对象属性有很多关系的域对象类别 class Category { static hasMany = [attributes: Attribute] ... } 我使用脚手架生成了一个多选框 <g:select name="attributes" from="${Attribute.list()}" multiple="multiple" optionKey="id" size="5" value="${categoryInstance?.attributes*
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选项时。一切都恢复正常了
其他人也有同样的问题吗
这是一只已知的虫子吗?我找不到它
有解决方法吗?当只选择了1个选项时,@Renso发布的解决方法对我不起作用,它最终以1属性的每个字符作为它而不是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)) }
你有没有检查过,它实际上是被提交的,例如,使用firebug之类的web开发工具,你有没有检查你的类别。保存错误呼叫?是的,我有。新ID已提交。更新不包含错误。它只是集合中的旧属性。新ID位于参数中。所以我确实找到了解决办法,但我不喜欢。categoryInstance.attributes.clear params.attributes.each{it->categoryInstance.attributes.addAttribute.FindByEdit as Long}