关于参数VO里包含VO的嵌套参数校验(@Valided和@Valid的用法)

一般我们会用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

原文地址:https://www.cnblogs.com/rachelgarden/p/15484474.html