【发布时间】:2021-01-24 09:08:57
【问题描述】:
我对 Spring boot 和依赖项 jakarta-validation-api 有疑问。
实际上我有一个简单的 DTO,它包含一些属性。但是,当我在 @Valid 注释中调用 REST 函数时,并没有验证此属性。
有人能找出我的错误吗?
我的 pom.mxml 依赖项的 sn-p:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0-M1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
<version>3.0.0</version>
</dependency>
我的 DTO 课程:
import jakarta.validation.Valid;
@Data
public class TestDTO implements Serializable {
private static final long serialVersionUID = -1362258531757232654L;
@NotEmpty(message = "Id could not be empty or null.")
@Size(min = 36, max = 36, message = "Id must contains exactly out of 36 characters.")
private String id;
@Min(value = 1, message = "Page size cannot be null or <= 0.")
private Integer page;
}
还有一个在主体中使用 DTO 的 REST-Resource 类的 sn-p:
@PostMapping(path = "/")
public Integer testValidation(@Valid @RequestBody TestDTO body) {
LOGGER.info(body);
return 1;
}
实际上我认为当我调用 Post-REST 方法时,它会在进入方法体之前进行验证,但实际上它进入方法体之前没有经过验证。
是因为“jakarta”依赖而不是“javax”吗?
希望你能帮助我:)
【问题讨论】:
标签: spring-boot maven bean-validation