我在控制器 (Controller) 的方法上加上了 @Valid 属性但是传入无效的数据后,SpringBoot 根本就没有校验数据。经查询原因是在 SpringBoot 2.3.0 以后,我们需要给 pom.xml 加入下面的依赖项,SpringBoot 校验属性 @Valid 才会起作用。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

以下是参考代码:

我们要求Person.Name属性不能为空。

package com.example.demo.model;

import javax.validation.constraints.NotBlank;
import java.util.UUID;

public class Person {

    @NotBlank
    private String name;

    private UUID id;

    public Person(UUID id, String name) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public UUID getId() {
        return id;
    }
}

以下是加了 @Valid 属性的 Controller的方法:

    @PostMapping
    public UUID addPerson(@Valid @NotNull @RequestBody Person person)
    {
        return this.personService.AddPerson(person);
    }

下面是完整的参考代码:
spring-boot-tutorial

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐