@NotBlank注解不生效解决方法

本文探讨了在使用@NotBlank注解进行字符串校验时遇到的问题,即即使不传递实体类的某属性,仍能成功反序列化。解决方法包括在Controller层加入@Valid注解,调整验证依赖版本,以及尝试将实体类和Controller层的注解来源统一。如果以上方法无效,还有一种奇特的解决方案,即实体类使用Hibernate的@NotBlank,Controller层使用Java的@Validated。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


@NotBlank用于字符串的空值空串校验。

但是在实体类属性A中加上注解后,Controller层的外部调用实体类,前端传参时,不传属性A,仍然可以反序列化成功,@NotBlank无效。


当@NotBlank注解用于实体类的某个属性时,Controller层的实体对象前,要搭配@Valid注解使用。

问题就是加了,也没有效果。

版本问题,适当的升高或降低校验依赖的版本。


我们引入的一般是这两个常用的:

Java 和 Hibernate


        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
        </dependency>

通过修改版本,基本上百分百可以解决问题。

如果还是不行,试一下奇葩的解法(有效)。


1、实体类中@NotBlank注解使用hibernate下的,Controller中@Valid使用java下的。

import javax.validation.constraints.NotBlank;

import org.hibernate.validator.constraints.NotBlank;

2、Controller类上边加上@Validated注解


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值