Grails:如何将域对象的错误与命令对象的错误结合起来?

Yar*_*voy 13 dns validation error-handling grails command

假设我有User域类和RegistrationCommand类.因此,当用户在网站上注册时,有两个步骤进行数据验证:

  1. RegistrationCommand约束验证.
  2. 用户域对象约束验证.

控制器动作接收命令对象并在计算后将其传递给模型中的视图.因此,我想将命令对象的错误加入域对象的验证错误,并将它们作为命令对象的一部分传递.最好的方法是什么?

Yar*_*voy 10

我认为完整的答案是:

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
}
Run Code Online (Sandbox Code Playgroud)


小智 5

我为我的项目做了以下工作,发现它更干净!

domain.errors.each {
  cmdObject.errors.reject(it.code, g.message(error: it))
} 
Run Code Online (Sandbox Code Playgroud)