@Valid 和 @NotEmpty 使用
时间: 2023-08-12 10:09:25 浏览: 111
`@Valid` 注解和 `@NotEmpty` 注解可以一起使用,以实现对对象及其字段的验证。
假设我们有一个 `User` 类,具有一个 `username` 字段,我们希望验证该字段不能为空。以下是如何使用 `@Valid` 和 `@NotEmpty` 注解:
```java
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
public class User {
@NotEmpty(message = "Username cannot be empty")
private String username;
// getters and setters
}
public class UserRequest {
@Valid
private User user;
// getters and setters
}
```
在上述示例中,我们在 `User` 类的 `username` 字段上使用了 `@NotEmpty` 注解来验证字段的非空性,并指定了自定义的错误消息。
然后,在 `UserRequest` 类中,我们使用了 `@Valid` 注解来触发对 `User` 对象的验证。这样,在验证 `UserRequest` 对象时,会同时对内部的 `User` 对象应用验证规则。
在 Spring MVC 中,可以在控制器方法的参数上使用 `@Valid` 注解和 `@RequestBody` 注解来触发验证和绑定请求体数据:
```java
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Validated
public class UserController {
@PostMapping("/users")
public void createUser(@Valid @RequestBody UserRequest request) {
// 处理创建用户的逻辑
}
}
```
在上述示例中,`createUser` 方法的参数 `request` 被标记为 `@Valid` 注解,以触发对 `UserRequest` 对象的验证。同时,使用 `@RequestBody` 注解将请求体数据绑定到 `UserRequest` 对象上。
如果验证失败,将会返回相应的错误信息。
阅读全文