今天使用到Spring 驗(yàn)證的模塊(Validator),稍微研究了一下,覺得不僅僅是書上講的那么簡單,在此總結(jié)下
介紹下Spring Validator 接口必須實(shí)現(xiàn)的方法
1、public boolean support(Class clazz);這個(gè)方法是要驗(yàn)證提交表單時(shí)對應(yīng)的那個(gè)緩存數(shù)據(jù)的類(通常由Hibernate生成),這通常由代碼編寫者設(shè)定,一般不會有錯(cuò)
2、public void validate(Object target, Errors errors);注意,這里返回的反而不是boolean,這是因?yàn)镾pring 在處理無法提交的表單使用的機(jī)制是例外機(jī)制,他會送出一個(gè)Errors,包裝了對應(yīng)的信息。通常使用的方法是由類ValidationUtils 提供的,該類提供了驗(yàn)證的幾個(gè)方法,并包裝了錯(cuò)誤。這里包裝后的錯(cuò)誤會出現(xiàn)在Controller 中的BindException
中,可以用getMessage() 方法來得到信息,不過這個(gè)信息很原始,可以利用適當(dāng)?shù)淖址幚頇C(jī)制處理一下。
其實(shí)這里有一個(gè)更好的方法,就是混合使用<spring:bind>標(biāo)簽,這個(gè)標(biāo)簽可以把對應(yīng)提交的form 對象和表單中相關(guān)名稱的字段綁定,而且可以通過它的子屬性打印出錯(cuò)誤信息例如你可以嵌入<c:out value="status.errorMessage" />這樣就會把該字段驗(yàn)證時(shí)失敗的信息顯示出來,非常容易和好用,建議大家可以使用
當(dāng)Validator 接口實(shí)現(xiàn)完畢后,要在配置servlet 的xml 文件中將對應(yīng)的Controller 的validator 屬性設(shè)置為你的Validator 接口實(shí)現(xiàn)類,這樣,系統(tǒng)就會自動對你需要驗(yàn)證的模塊進(jìn)行驗(yàn)證了。
如果你還想錦上添花的話,不但可以使用Spring MVC 的驗(yàn)證機(jī)制,還可以用JavaScript 寫一段富客戶端的驗(yàn)證機(jī)制
嗯,差不多了,就總結(jié)到此吧