1. 程式人生 > >Spring MVC 中的輸入驗證 Vlidator

Spring MVC 中的輸入驗證 Vlidator

在 Spring MVC 中有兩種方式可以驗證輸入:1. Spring 自帶的驗證框架;2. 利用 JSR 303 實現,即 Java Specification Requests

Converter 和 Formatter 作用於 field 級,在 MVC 應用程式中,能夠 將 String 轉換或格式化成另一種 Java 型別,如 java.util.Date。

驗證器作用於 object 級,決定某一個物件中的所有 field 是否均是有效的,以及是否遵循某些規則。

如果一個程式中即使用了 Formatter,又有 Validator(驗證器),則其事件順序是:在呼叫 Controller 期間,將會有一個或者多個 Formatter 試圖將輸入字串轉換成 domain 物件中的 field 值,一旦格式化成功,驗證器就會介入。

Spring 驗證器

為了建立 Spring 驗證器,要實現 org.springframework.validation.Validator 介面。該介面有 supports 和 validate 兩個方法。如果驗證器可以處理指定的 Class,supports 方法將返回 true,validate 方法會驗證目標物件,並將驗證錯誤填入 Errors 物件。

Errors 物件時 org.springframework.validation.Errors 介面的一個例項。Errors 物件中包含了一系列 FieldError 和 ObjectError 物件。

package
org.springframework.validation; public interface Validator { public abstract boolean supports (Class<?> clazz); public abstract void validate (Object target, Errors errros); }

工具類 ValidationUtils

org.springframework.validation.ValidationUtils 類是一個工具類,有助於編寫 Spring 驗證器。

JSR 303 驗證

JSR 303 是正式的 Java 規範,建議使用。