Я пытаюсь определить код ошибки из исключения, которое возникает при взаимодействии с объектом домена в Grails.
У меня есть база данных с некоторыми проверками полей, и одна из проверок заключается в том, что конкретный столбец должен быть уникальным. Согласно документам, он выдаст код ошибки className.propertyName.unique
(http://grails.org/doc/latest/ref/Constraints/unique.html). Когда я оборачиваю свой контроллер в блок try catch, например. Я могу поймать все виды исключений проверки:
catch (grails.validation.ValidationException e) {
exception handling code here
}
Как получить доступ к коду ошибки? Я хотел бы сделать что-то вроде If the Error Code = className1.propertyName2.unique
, а затем ответить propertyName2 is not unique
.
У меня есть «failOnError: true», установленный в качестве параметра, когда я выполняю операцию сохранения.
Спасибо!
className1.propertyName2.unique=propertyName2 is not unique
в файлmessages.properties
и Grails у вас работает не нужно ловить. - person MKB   schedule 08.01.2015domain object
, и это не удается, он будет делать это тихо, но вы ДОЛЖНЫ иметь в нем что-то под названиемerrors
, которое выдаст вам ошибки. Это будет выглядеть так: def domainObject = new DomainObject(params) if(!domainObject.save()){ domainObject.each{ print(it) } } Опять же, это быстро, грязно и неполно, но должно дать вам то, что вы нужно. - person Ted Delezene   schedule 08.01.2015domainObject.errors.each{ render it }
или что вы хотите с ним делать... или вы можете создать свое собственное исключение при ошибке, используя тот же метод, я обычно не обрабатываю это таким образом. Обычно, если объект не сохраняется должным образом, я визуализирую определенный шаблон, который перечисляет ошибки из объекта домена, который я передаю ему с помощьюeachError tag
( grails.org/doc/latest/ref/Tags/eachError.html а> ) - person Ted Delezene   schedule 09.01.2015