一般我們會用Vo來接收頁面傳遞過來的參數,並校驗,在Controller層的Vo上添加@Valided注解,然后就會在此Vo里校驗
項目中我發現,由於Vo里嵌套了Vo,參數校驗又在最里層,最后導致校驗不生效
1. Contoller層
2. Vo里面:
左邊的情況不校驗,修改為右邊的情況:為外層Vo加@Valid注解
3. 里層Vo
左邊的校驗在不加@Valid注解前不生效,加了@Valid注解后類型不匹配,修改為右邊的情況
關於類型:
@NotBlank用於String類
@NotNull用於基本類
@NotEmpty用於集合類
如果類型加錯,校驗就會不准確或者報錯
結論:要嵌套驗證,需要@Valided和@Valid配合使用
@Validated:可以用在類型、方法和方法參數上。但是不能用在成員屬性(字段)上
@Valid:可以用在方法、構造函數、方法參數和成員屬性(字段)上
同樣的結論此鏈接文章也有講到,講得比較詳細
https://blog.csdn.net/qq_27680317/article/details/79970590