一、介紹
在應用程序中,通過使用 Bean Validation 或是你自己定義的 constraint,例如 @NotNull
, @Max
, @ZipCode
, 就可以確保數據模型(JavaBean)的正確性。constraint 可以附加到字段,getter 方法,類或者接口上面。對於一些特定的需求,用戶可以很容易的開發定製化的 constraint。Bean Validation 是一個運行時的數據驗證框架,在驗證之後驗證的錯誤信息會被馬上返回。
下載 JSR 303 – Bean Validation 規範 http://jcp.org/en/jsr/detail?id=303
Hibernate Validator 是 Bean Validation 的參考實現 . Hibernate Validator 提供了 JSR 303 規範中所有內置 constraint 的實現,除此之外還有一些附加的 constraint。如果想了解更多有關 Hibernate Validator 的信息,請查看 http://www.hibernate.org/subprojects/validator.html
Bean Validation 中的 constraint
表 1. Bean Validation 中內置的 constraint
Constraint | 詳細信息 |
---|---|
@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) | 被註釋的元素必須符合指定的正則表達式 |
表 2. Hibernate Validator 附加的 constraint
Constraint | 詳細信息 |
---|---|
@Email | 被註釋的元素必須是電子郵箱地址 |
@Length | 被註釋的字符串的大小必須在指定的範圍內 |
@NotEmpty | 被註釋的字符串的必須非空 |
@Range | 被註釋的元素必須在合適的範圍內 |
——摘自http://www.ibm.com/developerworks/cn/java/j-lo-jsr303/
二、No validator錯誤及解決方法
javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer
使用hibernate validator出現上面的錯誤, 需要 注意
@NotNull 和 @NotEmpty 和@NotBlank 區別
@NotEmpty 用在集合類上面
@NotBlank 用在String上面
@NotNull 用在基本類型上
當@NotEmpty用在Integer類型上時將會出現上面的錯誤,換成@NotNull問題解決。
——摘自http://blog.csdn.net/dracotianlong/article/details/23181729