我在 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 注释做出反应
我想知道为什么会有这样的反应,感谢您的理解和回应。
我假设您使用的是 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 中