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
周銳 閱讀(1069)
評論(0) 編輯 收藏 所屬分類:
Groovy&Grails