2014-10-06 68 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)) }