2014-10-06 65 views
0

去时不保存选项我有一个的hasMany关系域对象的域对象类别属性Grails的多选3至2个选项

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个选项同样的情况。一切再次运作。

没有任何人有同样的问题?

这是一个知道是不是BUG? (我找不到它)

有没有解决办法?

+0

你有没有检查过,实际上是否被提交(例如,一些Web开发工具,如萤火虫),你检查你的'category.save()'调用错误? – cfrick 2014-10-06 12:09:41

+0

是的,我做到了。新的ID被提交。该更新不包含错误。它只具有集合中的旧属性。新的id在参数中。所以我找到了解决办法,但我不喜欢它。 categoryInstance.attributes.clear() params.attributes.each {它 - > categoryInstance.attributes.add(Attribute.findById(它作为龙)) } – 2014-10-06 12:41:26

回答

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)) }