2014-04-14 48 views
0

我有以下關係刪除相關的類:添加,更新和Grails的

class Host { 
    static hasMany = [ips: HostIp, groups: HostGroup] 
    static belongsTo = [HostGroup] 
    String dns 
} 

class HostIp { 
    static belongsTo: [host: Host] 
    String ip 
} 

class HostGroup { 
    static hasMany = [ hosts: Host ] 
    String name 
} 

我有一個GSP的形式,允許主機的版本。我有一個動態添加 - 編輯 - 刪除列表來添加,編輯和刪除新的和當前的主機IP,所以如果主機原本有兩個IP(ip1和ip2),但ip1被刪除,ip2修改爲ip3和ip4被添加,提交時

ips[0].id = 8 
ips[0].ip = ip1 
ips[1].id = 9 
ips[1].ip = ip2 

發送數據:該數據被髮送到控制器:在形式顯示

原始數據

ips[1].id = 9 
ips[1].ip = ip3 
ips[2].ip = ip4 

這意味着,作爲IP1被去除,既不其發送id或ip(其字段從表單中刪除),併發送新的ip4(新的動態字段添加編輯),沒有ID,因爲它還不存在。因此,在做bindData(host, params),然後save()時,ip2更新爲ip3,並創建了ip4,但ip1未被刪除。這是bindData的正常行爲嗎?如果沒有,這可以強制嗎?

我會問在另一篇文章的羣體關係......

的問候和感謝提前。

使用grails 2.3.7。

+1

我不認爲bindData會刪除未映射的記錄。如果可行的話,您可以實現目標的一個好方法就是消除所有內容,並每次重新編寫新數據的關聯。 – dmahapatro

回答