1. 程式人生 > >SpringMVC中的 JSR 303 數據校驗框架說明

SpringMVC中的 JSR 303 數據校驗框架說明

bind 工作 電子 支持 length spring容器 error digits 獲取

JSR 303 是java為Bean數據合法性校驗提供的標準框架,它已經包含在JavaEE 6.0中。
JSR 303 通過在Bean屬性上標註類似於@NotNull、@Max等標準的註解指定校驗規則,
並通過標準的驗證接口對Bean進行驗證:
---------------------------------------------------------------------------
註解                             說明
---------------------------------------------------------------------------
@Null                           被註釋的元素必須為null
@NotNull                        被註釋的元素不能為null
@AssertTrue                     被註釋的元素必須為true
@AssertFalse                    被註釋的元素必須為false
@Min(value)                     被註釋的元素必須是一個數字,其值必須
>=指定的最小值 @Max(value) 被註釋的元素必須是一個數字,其值必須<=指定的最大值 @DecimalMin(value) 被註釋的元素必須是一個數字,其值必須>=指定的最小值 @DecimalMax(value) 被註釋的元素必須是一個數字,其值必須<=指定的最大值 @Size(max, min) 被註釋的元素的大小必須在指定的範圍內 @Digits(integer, fraction) 被註釋的元素必須是一個數字,其值必須在可接受的範圍內 @Past 被註釋的元素必須是一個過去的日期 @Future 被註釋的元素必須是一個將來的日期 @Pattern(value) 被註釋的元素必須符合指定的正則表達式
--------------------------------------------------------------------------- Hibernate Validation 是JSR 303 的一個參考實現,除支持所有的標準的校驗註解之外, 它還支持以下的擴展註解: 註解 說明 @Email 被註釋的元素必須是一個電子郵箱地址 @Length 被註釋的字符串的大小必須在指定的範圍內 @NotEmpty 被註釋的字符串必須非空 @Range 被註釋的元素必須在合適的範圍內
--------------------------------------------------------------------------- Spring 4.0 擁有自己獨立的數據校驗框架,同時支持JSR 303 標準的校驗框架。 Spring 在進行數據綁定時,可同時調用校驗框架完成數據校驗工作。 在SpringMVC中, 可直接通過註解驅動的方式進行數據校驗。 Spring 的LocalValidatorFactoryBean 既實現了Spring的Validator接口, 也實現了 JSR 303 的Validator接口。只要在Spring容器中定義一個 LocalValidatorFactoryBean,即可將其註入到需要數據校驗的Bean中。 Spring本身並沒有提供 JSR303 的實現,所以必須將 JSR303 的實現者的jar包 放到類路徑下。 通過在處理方法的入參上標註 @Valid註解 即可讓SpringMVC 在完成數據綁定之後執行數據校驗的工作。 在已經標註了 JSR303 註解的表單/命令對象前標註一個 @Valid, SpringMVC 框架在將請求參數綁定到 該入參對象後,就會調用校驗框架根據註解生命的校驗規則實施校驗。 SpringMVC 是用過對處理方法簽名的規約來保存校驗結果的: 前一個表單/命令對象的校驗結果保存到隨後的入參中,這個保存的校驗結果的入參必須是 BindingResult 或 Errors 類型,這兩個類都位於 org.springframework.validation 包中。 但是需要註意的一點: 需要校驗的bean對象和其綁定結果的BindingResult對象必須成對出現,而且它們兩個必須緊挨著,之間不能有 其他的入參。 BindingResutl 其實是 Errors的子類, Errors 接口提供了獲取錯誤信息的方法,如 getErrorCount() 或 getFieldErrors(String field)。 BindingResult 擴展了 Errors 接口。

SpringMVC中的 JSR 303 數據校驗框架說明