您现在的位置是: 首页 > 后端开发 SpringBoot @NotBlank 不生效问题

SpringBoot @NotBlank 不生效问题

2020-06-11 后端开发 8156人已围观 14453次浏览

简介SpringBoot @NotBlank 不生效问题

SpringBoot 项目中用到了参数校验,而 Spring 的参数校验库为 validation-api ,所以直接在项目中进行了引用

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

而在实际使用的过程中发现,只引用这个库并没有任何的效果,demo 代码为

import lombok.Data;
import javax.validation.constraints.NotBlank;

@Data
public class User {
    @NotBlank
    private String username;
}


import org.springframework.validation.annotation.Validated;

@PostMapping("/user")
public User create(@Validated @RequestBody User user) {
	...
}

当 username 为空为null时,依然进入了 create 方法,并没有做任何的校验,也没有抛出异常。

经常查找文档发现,validation-api 只是一套标准,而具体是实现是依赖 hibernate-validator 库,所以在引用 validation-api 库的前提下,还要引用 hibernate-validator 库才能正常使用,具体的 pom 信息如下

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.13.Final</version>
</dependency>

之后重新运行项目,就会发现如果不传 username 参数,就会抛出异常

还需要注意的是,hibernate-validator 的版本要和 validation-api 版本相对应,否则依然会出现错误,比如我在项目中引用的 hibernate-validator 是 6.0.13.Final 版本(虽然不是目前最新的,但够用了。需要最新的也可以选择最新版本),需要引用的 validation-api 版本就应该为 2.0.1.Final,如图所示

参考地址

https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator/6.0.13.Final

其他 hibernate-validator 版本也可以在这个网站内找到,对应的 validation-api 依赖版本,看下面的介绍也可以找到

很赞哦! (0)

站长推荐

站点信息

  • 网站地图