Spring MVC 项目验证不对 @Valid 做出反应

问题描述 投票:0回答:1

我在 spring mvc 项目中有以下项目,但不知何故验证在我的应用程序中不起作用,这里是 pom.xml 的 lib 部分

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>

这是我使用 javax.validation lib 的 dto 类

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;


@Data
@Builder
@AllArgsConstructor
public class AccountControlRequestDto {
    @NotEmpty
    @NotNull
    private String debitAcount;
    @NotEmpty
    @NotNull
    private String creditAccount;
    @NotEmpty
    @NotNull
    private String username;
}

这是spring mvc项目中的控制器类

import javax.validation.Valid;

    @Operation(summary = "add leads transaction controller")
    @PostMapping()
    public ResponseEntity<?> addControllerToAccount(@Valid @RequestBody List<AccountControlRequestDto> requestDto){
        service.saveAccountControl(requestDto);
        return ResponseEntity.ok("Created");
    }

但它仍然没有对 @Valid 注释做出反应

我想知道为什么会有这样的反应,感谢您的理解和回应。

java spring spring-boot validation spring-mvc
1个回答
0
投票

我假设您使用的是 Spring boot 版本 3。 Spring Boot 2 和 Spring Boot 3 之间的区别是 javax 包被替换为 jakarta 包。

所有这些依赖项都位于此依赖项中

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

进口应该是:

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;

不是

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

考虑到这一点,你不需要

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

在你的 pom.xml 中

© www.soinside.com 2019 - 2024. All rights reserved.