最近在作的公司项目是一个表单系统,恰好要用到@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
(对于对象泛型,也能验证成功)