Grails中本质上有2个验证阶段,第一个阶段是 data binding ,当你把请求参数绑定到实体上发生,例如:def user = new User(params)
这时,因为类型转换(如String转换为Dates),在errors属性可能已经出现错误。
你可以检查它们并通过使用ErrorsAPI获得原始输入值:if(user.hasErrors()) {
if(user.errors.hasFieldErrors("login")) {
println user.errors.getFieldError("login").rejectedValue
}
}
验证的第2阶段发生在当你调用 validate 或 save时。
这时,Grails将会验证你在constraints 定义的约束值。
比如,默认的持久方法save会在执行之前调用 validate 。
因此,允许你像下面这样编码:if(user.save()) {
return user
}
else {
user.errors.allErrors.each {
println it
}
}