栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java嵌套验证参数不生效的情况

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java嵌套验证参数不生效的情况

今天在嵌套验证参数(限制参数长度)的时候 ,遇到了注解不生效的情况。

例如:一个实体类A中嵌套了另外一个实体类B。

        A:

public class A{
    @NotNull(message = "姓名不能为空")
    private String name;
 
    @NotNull(message = "年龄不能为空")
    private Integer age;
 
    @NotEmpty(message = "老师不能为空")
    private B teacher;
 }

        B:

public class B{
   
    @NotNull(message = "老师名字不能为空")
    private String tName;
 
    @NotNull(message = "老师年龄不能为空")
    private Integer tAge;
 
    @NotNull(message = "课程数量不能为空")
    @Size(Max=10,message="最大数量为10")
    private Integer num;
}

描述: 要限制"课程数量"的大小,我们加了"@Size"注解,结果是"@Size"不生效。 

        如果 A实体的 teacher属性不加 @Valid注释,只有@NotNull或@NotBlank,无论controller层入参方法上采用@Validated还是@Valid验证,Spring Validation框架只会对A实体类上的name、age和这两个属性做非空或数量验证。不会对 teacher字段里的 B实体类中的属性字段进行验证。也就是说,controller层方法入参上加 @Validated 或 @Valid ,实际运行上并不会自动对参数进行嵌套验证。

解决方法:

        想要实现嵌套验证参数,必须手动在ItemA的teacher字段上明确指出,A实体中teacher字段里面的属性也要进行验证。

        由于@Validated不能用在成员属性(字段)上,但是@Valid能加在成员属性(字段)上,而且@Valid类注解上也说明了它支持嵌套验证功能。

        因此:需要在嵌套验证类的相应字段上加上@Valid注解,并配合controller层入参方法参数上,加上@Validated 或 @Valid注解来进行嵌套验证。  这样就解决了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号