gpt4 book ai didi

java - 如何在 Spring Boot 中使用 @NotEmpty 约束来验证 HTTP 请求正文?

转载 作者:行者123 更新时间:2023-12-04 08:15:52 25 4
gpt4 key购买 nike

我有一个包含 HTTP 端点的 RestController 来创建一个新用户。

@RestController
public class UserController {
@PostMapping("/user")
public CompletableFuture<ResponseEntity<UserResponse>> createUser(
@Valid @RequestBody UserRequest userRequest) {

return CompletableFuture.completedFuture(
ResponseEntity.status(HttpStatus.ACCEPTED).body(userService.createUser(userRequest)));
}
}
我的 UserRequest 模型如下:
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(NON_NULL)
@NoArgsConstructor
public class UserRequest {

// @NotNull
@NotEmpty private String name;
}
现在,每次我使用有效负载(例如, { "name": "John" } )调用 POST/user 端点时,都会收到以下错误:
HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.String'. Check configuration for 'name'"
换句话说,无论“name”属性是否为空,都会抛出异常。
但是,当我使用 @NotNull 时相反,只有在没有 name 属性或 { "name": null } 时才会抛出异常。 ,正如预期的那样。
我是否滥用了@NotEmpty 约束?

最佳答案

Maven 依赖项(在 pom.xml 中) -

<!-- Java bean validation API - Spec -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>

<!-- Hibernate validator - Bean validation API Implementation -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.11.Final</version>
</dependency>

<!-- Verify validation annotations usage at compile time -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.0.11.Final</version>
</dependency>
在用户请求模型中——
import javax.validation.constraints.NotEmpty; 

@NotEmpty(message = "Name cannot be empty")
private String name;

关于java - 如何在 Spring Boot 中使用 @NotEmpty 约束来验证 HTTP 请求正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65705670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com