我遇到了嵌入式类中布尔值的自动数据绑定问题。我为此创建了一个示例:
域类:
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的错误吗?有什么好的工作吗?
答案 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的错误。