请求体对象的校验
@PostMapping("nestValid")
public UserBean nestValid(@Validated @RequestBody UserBean userBean){
System.out.println(userBean);
return userBean;
}
嵌套对象的校验
@Data
public class UserBean {
@NotEmpty(groups = {CreationGroup.class})
private String username;
@Min(value = 18)
private Integer age;
private String email;
@Min(value = 1 ,groups = {UpdateGroup.class})
private Long id;
//嵌套验证必须要加上@Valid
@Valid
@NotNull
private AddressBean address;
}
分组校验
// 定义校验组
public interface AddGroup {}
public interface UpdateGroup {}
// 使用校验组
public class User {
@NotNull(groups = UpdateGroup.class)
private Long id;
@NotBlank(groups = {AddGroup.class, UpdateGroup.class})
private String name;
}
// 在controller中进行分组校验
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public String addUser(@Validated(AddGroup.class) @RequestBody User user) {
// 处理添加用户逻辑
return "User added successfully";
}
@PutMapping
public String updateUser(@Validated(UpdateGroup.class) @RequestBody User user) {
// 处理更新用户逻辑
return "User updated successfully";
}
}
// @ControllerAdvice和@ExceptionHandler定义全局异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<String> handleValidationExceptions(MethodArgumentNotValidException ex) {
// 处理校验异常
return new ResponseEntity<>("Validation failed: " + ex.getMessage(), HttpStatus.BAD_REQUEST);
}
}