介紹一下JSR-303常用的方法
@NotNull 注解元素必須是非空
@Null 注解元素必須是空
@Digits 驗證數字構成是否合法
@Future 驗證是否在目前系統時間之後
@Past 驗證是否在目前系統時間之前
@Max 驗證值是否小于等于最大指定整數值
@Min 驗證值是否大于等于最小指定整數值
@Pattern 驗證字元串是否比對指定的正規表達式
@Size 驗證元素大小是否在指定範圍内
@DecimalMax 驗證值是否小于等于最大指定小數值
@DecimalMin 驗證值是否大于等于最小指定小數值
@AssertTrue 被注釋的元素必須為true
@AssertFalse 被注釋的元素必須為false
@Email 被注釋的元素必須是電子郵箱位址
@Length 被注釋的字元串的大小必須在指定的範圍内
@NotEmpty 被注釋的字元串的必須非空
@Range 被注釋的元素必須在合适的範圍内
@Validated與@Valid的差別
Spring Validation驗證架構對參數的驗證機制提供了@Validated(Spring’s JSR-303規範,是标準JSR-303的一個變種),javax提供了@Valid(标準JSR-303規範),配合BindingResult可以直接提供參數驗證結果。
在檢驗Controller的入參是否符合規範時,使用@Validated或者@Valid在基本驗證功能上沒有太多差別。但是在分組、注解地方、嵌套驗證等功能上兩個有所不同:
- 分組:
- @Validated:提供了一個分組功能,可以在入參驗證時,根據不同的分組采用不同的驗證機制
- @Valid:作為标準JSR-303規範,還沒有吸收分組的功能。
- 需要兩個接口,比如一個接口叫AddPerson,另一個叫UpdatePerson,接口什麼都不需要空的就可以,用來做分組用。
- 注解地方:
- @Validated:可以用在類、方法和方法參數上。
- @Valid:可以用在方法、構造函數、方法參數和成員屬性(字段)上
- 嵌套驗證:
- 嵌套驗證就是類嵌套類的驗證,比如我要在集合上加一個@notnull的注解,要求該集合中的每一個對象都被驗證,如果隻用@Validated與@Valid是不會驗證的。我們要用@Validated配合@Valid來進行驗證。
例如我想讓props中的每一個元素都按照我規定的JSR-303校驗進行驗證。
那麼我在controller中不管用@Validated還是@Valid都是不能驗證的。
隻需要我在前面加上@Validated注解
然後把@Valid放到需要驗證的集合上就可以了。