Grails的验证功能是建立在Spring's Validator API和数据绑定之上的,但Grails在此特性和约束机制的基础上又提供了统一的定义验证约束的方法。
在一个领域类中,约束constraints被定义在constraints属性的代码块中:
class User {
...
static constraints = {
userName(size:5..15, blank:false, unique:true)
password(size:5..15, blank:false)
email(email:true, blank:false)
age(min:18, nullable:false)
}
}
这样在你每次保存一个对象的时候都回去调用validate方法来验证.
当然你可以在任何实例上调用其validate方法去验证领域类.
def user = new User(params)
if(user.validate()) {
// do something with user
} else {
user.errors.allErrors.each {
println it
}
}
如果你在注册的时候, 比如要输入两次密码, 这时候想把错误消息也放入领域类的errors属性里面, 由于领域类的 errors属性是Spring的Errors接口实例,
Errors接口提供了访问这些验证错误的方法,并且还可以取得原始的值。
具体使用的实现类是BeanPropertyBindingResult
Java.lang.Object
org.springframework.validation.AbstractErrors
org.springframework.validation.AbstractBindingResult
org.springframework.validation.AbstractPropertyBindingResult
org.springframework.validation.BeanPropertyBindingResult
每一个消息对应一个org.springframework.validation.ObjectError对象.所有可以想领域类的errors属性里面直接添加ObjectError对象就可以了.
def error = new ObjectError('password', message(code:'pinpin.register.valid.password.notequal'))
user.errors.addError(error)
posted on 2008-07-20 22:20
周锐 阅读(1057)
评论(0) 编辑 收藏 所属分类:
Groovy&Grails