Suppose I have User domain class and RegistrationCommand class. So when user is registering on website there are two steps for data 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?
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
}
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))
}
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With