Grails: Как объединить ошибки доменных объектов с ошибками объектов команд?
Предположим, что у меня есть класс домена пользователя и класс RegistrationCommand. Поэтому, когда пользователь регистрируется на веб-сайте, есть два шага для проверки данных:
- Проверка учетных данных RegistrationCommand.
- Объект пользовательского домена сдерживает проверку.
Действие контроллера получает объект команды и передает его для просмотра в модели после вычисления. Поэтому я хочу присоединиться к ошибкам проверки объектов домена с ошибками объектов команд и передать их как часть объекта команды. Каков наилучший способ сделать это?
Ответы
Ответ 1
Я думаю, что полный ответ:
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
}
Ответ 2
Я сделал следующее для своего проекта и счел его более чистым!
domain.errors.each {
cmdObject.errors.reject(it.code, g.message(error: it))
}
Ответ 3
Возможно, вы можете использовать механизм отклонения, т.е.
domainObjects.errors.each{
commandObject.errors.reject( ... )
}
http://grails.org/doc/1.3.7/ref/Domain%20Classes/errors.html