我想了解Grails 2.3.4生成脚手架方法是如何执行验证的。例如,这是我的俱乐部领域产生什么样保存方法:Grails 2.3.4生成脚手架验证
def save(Club clubInstance) {
if (clubInstance == null) {
notFound()
return
}
if (clubInstance.hasErrors()) {
respond clubInstance.errors, view:'create'
return
}
clubInstance.save flush:true
request.withFormat {
form {
flash.message = message(code: 'default.created.message', args: [message(code: 'clubInstance.label', default: 'Club'), clubInstance.id])
redirect clubInstance
}
'*' { respond clubInstance, [status: CREATED] }
}
}
从我的理解验证的第一阶段发生在数据绑定到拯救行动的俱乐部clubinstance参数。所以任何数据绑定错误都会被if(clubInstance.hasErrors())所捕获。
我没有看到显式调用clubInstance.validate()或对文档建议的任何错误检查clubInstance.save。它确实似乎工作。那么,如果有违反约束的情况,该方法如何验证并返回到视图?
更重要的是,我们不应该使用生成的脚手架控制器作为在Grails中执行基本CRUD的最佳实践方式吗?
一如既往地感谢Burt的解释。我没有意识到复杂的类型被视为Command对象。在你解释之后,我回到了关于数据绑定的文档,并发现:“有两类控制器动作参数,第一类是命令对象。”然后让我到Command:“在执行控制器动作之前,Grails会自动创建命令对象类的实例并通过绑定请求参数来填充它的属性。如果命令对象类被标记为Validateable,那么命令对象将会是验证“。 – bholl