1. 程式人生 > >@Validated註解無效,以及巢狀物件屬性的@NotBlank無效問題

@Validated註解無效,以及巢狀物件屬性的@NotBlank無效問題

最近在做的公司專案是一個表單系統,剛好要用到@Validated註解來對錶單欄位進行驗證。第一次使用遇到了一些坑,問了同事之後,總算是掌握了。


首先,在dto實體你想要做驗證的屬性前,加上@NotBlank/NotNull/NotEmpty註解:
圖

他們的區別如下:

@NotBlank:只用在String上,表示傳進來的值不能為null,而且呼叫trim()後,長度必須大於0
@NotNull:不能為null,但可以為empty(分配了記憶體空間,但值為空)
@NotEmpty:不能為null,而且長度必須大於0

然後在service層介面前添加註解@Validated

這裡寫圖片描述

然後執行,給屬性傳遞空值,發現沒有任何反應;是因為沒在介面方法的引數前加上@Valid註解,如下所示:

這裡寫圖片描述

加上後再執行,傳遞空值,成功報錯。
(同時,以上總結可以加在controller層進行驗證,@valid同樣加在方法引數前經典電影,@validated加在controller類名前圖

這裡寫圖片描述

同樣能起效果)

做到後面發現傳遞的物件裡面還有一個物件,要對裡面的物件進行驗證,這時候是驗證不到的
這裡寫圖片描述

這裡寫圖片描述

需要在裡面物件前也加上總結@valid,這樣,無論巢狀多少,都可以驗證

這裡寫圖片描述
(對於物件泛型,也能驗證成功)