最近在作的公司項目是一個表單系統,恰好要用到@Validated註解來對錶單字段進行驗證。第一次使用遇到了一些坑,問了同事以後,總算是掌握了。html
首先,在dto實體你想要作驗證的屬性前,加上@NotBlank/NotNull/NotEmpty註解: spa
他們的區別以下:htm
@NotBlank:只用在String上,表示傳進來的值不能爲null,並且調用trim()後,長度必須大於0
@NotNull:不能爲null,但能夠爲empty(分配了內存空間,但值爲空)
@NotEmpty:不能爲null,並且長度必須大於0對象
而後在service層接口前添加註解@Validated接口
而後運行,給屬性傳遞空值,發現沒有任何反應;是由於沒在接口方法的參數前加上@Valid註解,以下所示:圖片
加上後再運行,傳遞空值,成功報錯。
(同時,以上總結能夠加在controller層進行驗證,@valid一樣加在方法參數前經典電影,@validated加在controller類名前圖內存
一樣能起效果)get
作到後面發現傳遞的對象裏面還有一個對象,要對裏面的對象進行驗證,這時候是驗證不到的 it
須要在裏面對象前也加上總結@valid,這樣,不管嵌套多少,均可以驗證io
(對於對象泛型,也能驗證成功)