2012-10-26 49 views
3

我在嵌入類中的布爾值的自動數據綁定有問題。我創建了這樣的示例:嵌入布爾值的Grails數據綁定

域類:

class TestMe { 

    TestEmbedded testEmbedded = new TestEmbedded() 

    static embedded = ['testEmbedded'] 

    static constraints = { 
    } 
} 

嵌入類:

class TestEmbedded { 

    String stringEmbedded = "test" 
    Boolean booleanEmbedded = false 
} 

控制器:

class TestMeController { 

    static scaffold = true 
} 

腳手架編輯和穿心蓮呈現輸入正確。當我創建或編輯一個即時,嵌入式屬性工作正常。只有一個問題。當我嘗試編輯一個TestMe.testEmbedded.booleanEmbedded從true值到false值(使用複選框)(其他方式進行編輯時,可以!),數據綁定不起作用。這是一個Grails的bug嗎?有什麼好的工作臺?

回答

0

確保通過在控制器中打印參數將該字段設置爲false時實際傳遞字段。你必須在控制器中創建一個虛擬更新方法來測試它:

class TestController { 

    static scaffold = true 

    def update() { 
     params.each { 
      printing it 
     } 
    } 
} 

標準HTML表單不會發送未勾選的複選框; Grails的創建一個隱藏的變量中的複選框名稱來處理這個前(總是發送)用下劃線,如果你如果表格沒有使用g:checkBox您可以手動創建隱藏的變數,或是使用g:checkBox

用控制器中的邏輯處理它。查看生成的頁面的來源可能會有幫助。

希望這有助於!

+1

我使用的是G:複選框的複選框,因此它使用下劃線屬性。問題在於,Grails數據綁定在它是域類的屬性時起作用,但當它是嵌入類的屬性時不起作用。說實話,我不想改變控制器,我想離開那裏的腳手架。任何解決方案?:-) – kuceram