Grails: How to combine domain objects' errors with command objects' errors?

拜拜、爱过 提交于 2019-12-04 09:26:48

问题


Suppose I have User domain class and RegistrationCommand class. So when user is registering on website there are two steps for data validation:

  1. RegistrationCommand constraints validation.
  2. User domain object constrains validation.

Controller action receive command object and pass it to view in a model after computing. So, I want to join domain objects' validation errors with command objects' errors and pass them as a part of command object. What is the best way to do that?


回答1:


I think the full answer is:

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:


I did the following for my project and found it to be more cleaner!

domain.errors.each {
  cmdObject.errors.reject(it.code, g.message(error: it))
} 



回答3:


You could probably use the reject mechanism, i.e.

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

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



来源:https://stackoverflow.com/questions/8366168/grails-how-to-combine-domain-objects-errors-with-command-objects-errors

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!