Grails: Как объединить ошибки объектов домена с ошибками объектов команды? - PullRequest
13 голосов
/ 03 декабря 2011

Предположим, у меня есть класс домена пользователя и класс RegistrationCommand.Поэтому, когда пользователь регистрируется на веб-сайте, существует два этапа проверки данных:

  1. Проверка ограничений RegistrationCommand.
  2. Проверка ограничений объекта объекта домена пользователя.

КонтроллерДействие получает объект команды и передает его для просмотра в модели после вычислений.Итак, я хочу объединить ошибки проверки объектов домена с ошибками объектов команды и передать их как часть объекта команды.Каков наилучший способ сделать это?

Ответы [ 3 ]

10 голосов
/ 06 января 2012

Я думаю, что полный ответ:

if (!user.validate() || !user.save(true))
{
    if (user.errors.hasErrors())
    {
        user.errors.allErrors.each {FieldError error ->
            final String field = error.field?.replace('profile.', '')
            final String code = "registrationCommand.$field.$error.code"
            command.errors.rejectValue(field, code)
        }
    }
    chain(action: 'registration', model: [command: command])
    return
}
5 голосов
/ 16 августа 2012

Я сделал следующее для своего проекта и нашел его более чистым!

domain.errors.each {
  cmdObject.errors.reject(it.code, g.message(error: it))
} 
3 голосов
/ 04 декабря 2011

Возможно, вы могли бы использовать механизм отбраковки, т.е.

domainObjects.errors.each{
     commandObject.errors.reject( ... )
}

http://grails.org/doc/1.3.7/ref/Domain%20Classes/errors.html

...