3

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

域类:

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 从真值编辑为假值(使用复选框)(其他方式轮编辑工作!)时,数据绑定不起作用。它是grails的错误吗?有什么好的工作方法吗?

4

2 回答 2

0

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

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

于 2012-12-12T14:00:41.750 回答
0

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

class TestController {

    static scaffold = true

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

标准 HTML 表单不会发送未选中的复选框;Grails 创建一个隐藏变量(始终发送),在复选框名称前带有下划线来处理此问题,如果您正在使用g:checkBox

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

希望这会有所帮助!

于 2012-10-31T04:35:07.473 回答