我试图了解Grails 2.3.4生成的脚手架方法如何执行验证。例如,这是我的Club Domain Save方法生成的内容:

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 ClubStance参数。因此,如果(clubinstance.hasErrors())将捕获任何数据绑定错误。

我没有明确调用clubinstance.validate()或在ClubInstance上检查任何错误检查。作为文档建议。它似乎确实有效。那么如果存在限制违规,此方法如何验证并返回视图?

更重要的是,我们不应该使用生成的脚手架控制器作为在Grails中进行基本Crud的最佳实践方式?

有帮助吗?

解决方案

当您在Controller操作方法中包含参数时,Grails将为它们进行数据绑定。对于简单类型,如字符串,数字,布尔值等。参数名称与参数名称匹配,如果有一个匹配和将参数字符串转换为请求类型的匹配方式,则为您完成。

对于复杂类型,参数被视为命令对象。如果它在控制器类中定义,则它在通过AST转换的编译时进行了验证。如果类是在别处定义的(例如src / groovy),它必须用grails.validation.Validateable注释注释,如果它是域类,那么它显然是明显的validatable。在任何情况下,在创建实例和数据绑定后,为您调用validate()。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top