2012-10-26 20 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