controller
层,写个 @Validated
注解,之后的 @NotNull
判断等注解判断只在 @Validated
定义的对象生效,现在我想要实现 对象中的对象也实现验证效果 ,我这里直接说结论了,我写了如下类,我需要body对象也能够得到参数验证,则在类方法上加个 @Valid
注解即可实现,接下去看源码 @Data public class Request<T> { /** * 请求体 */ @Valid private T body; /** * 请求码(预留可不填) */ private Integer requestCode; /** * 额外请求参数,可另做处理 */ private Map<String,Object> extend; } 复制代码
通过 SpringValidatorAdapter
验证类作为核心
接下去解析注解,中间调整过多,我会跳过几层
终于找到获取对象属性的 @Valid
注解
获得了这个级联元数据,后续的判断就会用到这个,设值 valueContext
,我把这个 ExampleDeleteVo
对象的id属性设值了注解 @NotNull
currentValue
一开始我研究 @Validated
注解就是为了找是否有办法验证对象内对象,如果不行可能就需要自己写拦截器方法了,不到迫不得已我也不想重复造轮子,毕竟 @Validated
自带的验证这么多,写起来也蛮累的,还容易出bug。有耐心看完这篇文章的估计是遇到 @Vaildated
的问题了,希望能起到抛砖引玉的作用吧