我试图了解 Grails 2.3.4 生成的脚手架方法如何执行验证。例如,这是为我的 Club 域保存方法生成的:
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] }
}
}
据我了解,验证的第一阶段发生在数据绑定到保存操作的 Club clubinstance 参数上。所以任何数据绑定错误都会在 if (clubInstance.hasErrors()) 上被捕获。
如文档所示,我没有看到对 clubInstance.validate() 的显式调用或对 clubInstance.save 的任何错误检查。然而,它似乎确实有效。那么如果存在约束冲突,该方法如何验证并返回视图呢?
更重要的是,我们不应该使用生成的脚手架控制器作为在 Grails 中执行基本 CRUD 的最佳实践方式吗?