Grails:调试save()或validate()

1 grails

我对Grails有点新鲜.当我创建或更新域对象和fire save()validate()对象时,如果方法失败,系统似乎不会抛出异常.我没有看到任何方法来检查究竟是什么失败.

一个典型的片段:

if (domainInstance.validate()) {
  flash.message = "Succesfully updated domain object"
} else {
  flash.message = "Failed to update domain object"
  //throw new RuntimeException("Invalid broker")
  log.error "Failed to update domain object"
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,验证失败,我在黑暗中为什么.有人能说清楚吗?

如果置于try/catch中,则不会抛出异常.

Ami*_*ain 6

mydomain.validate()用于仅验证对象.您可以使用mydomain.hasErrors()来加载errors对象并打印以下语句出错的地方.

if(mydomain.hasErrors()){
   mydomain.errors.allErrors.each{println it}
}
Run Code Online (Sandbox Code Playgroud)

通常我喜欢保存和更新任何对象的方式是

if(mydomain.hasErrors() || !mydomain.save(failOnError:true){
  //action to be taken if domain validation fails.
}
Run Code Online (Sandbox Code Playgroud)

通过设置failOnError:true,如果save()失败,将抛出需要在控制器中捕获的验证异常.