导入依赖
<!-- 参数校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
controller层
@ResponseBody
@PostMapping("/valid")
public String testValid(@Validated @RequestBody Student student) {
System.out.println(student);
return "ok";
}
实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
@NotNull
private Integer id;
private String name;
private Integer age;
@Email(message = "邮箱有误!")
private String email;
}
校验异常处理
@Slf4j
@ControllerAdvice
public class ValidtedExceptionHandler {
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public String exceptionHandler(MethodArgumentNotValidException exception) {
BindingResult result = exception.getBindingResult();
StringBuilder stringBuilder = new StringBuilder();
if (result.hasErrors()) {
List<ObjectError> errors = result.getAllErrors();
errors.forEach(p -> {
FieldError fieldError = (FieldError) p;
log.warn("Bad request Parameters: dto entity [{}],field [{}]," +
"message [{}]",fieldError.getObjectName(),fieldError.getField(),fieldError.getDefaultMessage());
stringBuilder.append(fieldError.getDefaultMessage());
});
}
return stringBuilder.toString();
}
}
使用postman测试
打印结果
c.p.d.handler.ValidtedExceptionHandler : Bad request Parameters: dto entity [student],field [email],message [邮箱有误!]
c.p.d.handler.ValidtedExceptionHandler : Bad request Parameters: dto entity [student],field [id],message [不能为null]