Grails:调试save()或validate()

Grails:调试save()或validate(),grails,Grails,我对Grails有些陌生。当我创建或更新域对象并在对象上激发save或validate时,如果方法失败,系统似乎不会抛出异常。我看不出有什么办法来检查到底是什么失败了 一个典型的片段: if (domainInstance.validate()) { flash.message = "Succesfully updated domain object" } else { flash.message = "Failed to update domain object" //throw

我对Grails有些陌生。当我创建或更新域对象并在对象上激发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"
}
在我的情况下,验证失败了,我不知道为什么。 有人能解释一下吗


如果放入try/catch,则不会引发异常。

mydomain.validate仅用于验证对象。您可以使用mydomain.hasErrors加载errors对象,并打印以下语句的错误

if(mydomain.hasErrors()){
   mydomain.errors.allErrors.each{println it}
}
通常我更喜欢保存和更新任何对象的方式是

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

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

mydomain.validate仅用于验证对象。您可以使用mydomain.hasErrors加载errors对象,并打印以下语句的错误

if(mydomain.hasErrors()){
   mydomain.errors.allErrors.each{println it}
}
通常我更喜欢保存和更新任何对象的方式是

if(mydomain.hasErrors() || !mydomain.save(failOnError:true){
  //action to be taken if domain validation fails.
}
通过设置failOnError:true,如果保存失败,将抛出需要在控制器中捕获的验证异常

您还可以在grails配置文件中为整个应用程序设置failOnError=true

grails.gorm.failOnError=true
GORM

您还可以在grails配置文件中为整个应用程序设置failOnError=true

grails.gorm.failOnError=true

GORM

请在代码块中格式化代码。文本字段上方是101/010图标。请在代码块中格式化您的代码。它是文本字段上方的101/010图标。