嵌入式布尔值的Grails数据绑定

时间:2012-10-26 08:14:38

标签: grails grails-2.0

我遇到了嵌入式类中布尔值的自动数据绑定问题。我为此创建了一个示例:

域类:

class TestMe {

   TestEmbedded testEmbedded = new TestEmbedded()

   static embedded = ['testEmbedded']

   static constraints = {
   }
}

嵌入式课程:

class TestEmbedded {

   String stringEmbedded = "test"
   Boolean booleanEmbedded = false
}

控制器:

class TestMeController {

    static scaffold = true
}

Scaffolded edit and creat正确呈现输入。当我创建或编辑瞬间时,嵌入的属性可以正常工作。只有一个问题。当我尝试将TestMe.testEmbedded.booleanEmbedded从true值编辑为false值(使用复选框)时(另一种方式是编辑工作!),数据绑定不起作用。这是Grails的错误吗?有什么好的工作吗?

2 个答案:

答案 0 :(得分:0)

通过在控制器中打印params,确保在设置为false时实际传递该字段。您必须在控制器中创建一个虚拟更新方法来测试它:

class TestController {

    static scaffold = true

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

标准HTML表单不会发送未选中的复选框; Grails创建一个隐藏变量(总是发送),在复选框名称前面有一个下划线,以便在使用g:checkBox时处理此问题

如果表单未使用g:checkBox,您可以手动创建隐藏变量,也可以使用控制器中的逻辑处理它。查看生成的页面的来源可能会有所帮助。

希望这有帮助!

答案 1 :(得分:0)

我为此创建了Grails问题,因为它似乎是Grails的错误。

http://jira.grails.org/browse/GRAILS-9664