在平常開發中,Hibernate Validator常常用來驗證bean的字段,基於註解,方便快捷高效。java
1. Bean Validation 中內置的 constraintgit
註解 做用web
@Valid | 被註釋的元素是一個對象,須要檢查此對象的全部字段值 |
---|---|
@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
註解 | 做用 |
---|---|
被註釋的元素必須是電子郵箱地址 | |
@Length(min=, max=) | 被註釋的字符串的大小必須在指定的範圍內 |
@NotEmpty | 被註釋的字符串的必須非空 |
@Range(min=, max=) | 被註釋的元素必須在合適的範圍內 |
hibernate補充的註解中,最後3個不經常使用,可忽略。
主要區分下@NotNull @NotEmpty @NotBlank 3個註解的區別:正則表達式
@NotNull 任何對象的value不能爲null算法
@NotEmpty 集合對象的元素不爲0,即集合不爲空,也能夠用於字符串不爲nullapi
@NotBlank 只能用於字符串不爲null,而且字符串trim()之後length要大於0測試
舉個使用的例子:url
-
public class User {
-
-
@NotBlank
-
private String name;
-
-
//年齡要大於18歲
-
@Min(18)
-
private int age;
-
-
@Email
-
private String email;
-
-
//嵌套驗證
-
@Valid
-
private Product products;
-
-
... //省略getter,setter
-
}
-
-
public class Product {
-
-
@NotBlank
-
private String name;
-
-
//價格在10元-50元之間
-
@Range(min=10,max=50)
-
private int price;
-
-
... //省略getter,setter
-
}
本人當時測試引入的依賴爲:spa
-
<dependency>
-
<groupId>org.hibernate</groupId>
-
<artifactId>hibernate-validator</artifactId>
-
<version>5.3.4.Final</version>
-
</dependency>
-
<dependency>
-
<groupId>javax.el</groupId>
-
<artifactId>javax.el-api</artifactId>
-
<version>2.2.4</version>
-
</dependency>
-
<dependency>
-
<groupId>org.glassfish.web</groupId>
-
<artifactId>javax.el</artifactId>
-
<version>2.2.4</version>
-
</dependency>