假设我有User域类和RegistrationCommand类。因此,当用户在网站上注册时,有两个步骤进行数据验证:
控制器操作接收命令对象并在计算后将其传递给模型中的视图。因此,我想将命令对象的错误加入域对象的验证错误,并将它们作为命令对象的一部分传递。最好的方法是什么?
答案 0 :(得分: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
}
答案 1 :(得分:5)
我为我的项目做了以下工作,发现它更清洁了!
domain.errors.each {
cmdObject.errors.reject(it.code, g.message(error: it))
}
答案 2 :(得分:3)
您可以使用拒绝机制,即
domainObjects.errors.each{
commandObject.errors.reject( ... )
}
http://grails.org/doc/1.3.7/ref/Domain%20Classes/errors.html