Grails: отладка save () или validate () - PullRequest
       0

Grails: отладка save () или validate ()

1 голос
/ 23 августа 2010

Я немного новичок в 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, это не выдает исключение.

Ответы [ 2 ]

6 голосов
/ 23 августа 2010

mydomain.validate () используется только для проверки объекта.Вы можете использовать mydomain.hasErrors (), чтобы загрузить объект ошибок и напечатать, что пошло не так, с помощью следующего оператора.

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 в случае сбоя save () будет выдано исключение для проверки, которое необходимо отловить в контроллере.

4 голосов
/ 24 августа 2010

Вы также можете установить failOnError = true для всего приложения в файле конфигурации Grails

grails.gorm.failOnError=true

http://www.grails.org/doc/1.3.x/guide/3.%20Configuration.html#3.1.3 GORM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...