Validation进行参数校验
Validation进行参数校验
各位同袍们,你们好呀!!!我是一个才入java开发者行的萌新,今天研究了一下Validation的一个校验框架,为了怕自己遗忘掉,所以在此记录一下,同时也希望能帮到各位同袍们!!!!!!好了,不多说,开始记录!!
首先需要导入一个它的依赖框架
它对ben进行校验
@NotBlank 就是它的验证注解 message 就是它的错误提示消息,可以自定义
它的注解有如下:
自定义错误处理
Spring Boot的Controller方法中可以传一个BindingResult或者Errors类型的参数
@RestController
public class BookController {
@PostMapping("/book")
public Book getBook(@Valid Book book, BindingResult result, HttpServletResponse response) {
if (result.hasErrors()) {
result.getAllErrors().forEach((error) -> {
FieldError fieldError = (FieldError) error;
// 属性
String field = fieldError.getField();
// 错误信息
String message = fieldError.getDefaultMessage();
System.out.println(field + ":" + message);
});
}
// ...
return book;
}
}
Spring Boot的异常处理+Bean Validation
Spring Boot 中有一个专门处理错误信息的一个类叫做ResponseEntityExceptionHandler。其中有很多关于400的错误处理,也就是参数错误的处理,其中就有一个专门用来处理没有通过校验的参数的方法。我们重写这个类的这个方法即可。
@ControllerAdvice // Spring 的异常处理的注解
public class BadRequestExceptionHandler extends ResponseEntityExceptionHandler {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
protected ResponseEntity<Object> handleBindException(BindException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
Map<String, String> messages = new HashMap<>();
BindingResult result = ex.getBindingResult();
if (result.hasErrors()) {
List<ObjectError> errors = result.getAllErrors();
for (ObjectError error : errors) {
FieldError fieldError = (FieldError) error;
messages.put(fieldError.getField(), fieldError.getDefaultMessage());
}
logger.error(messages.toString());
}
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(messages);
}
}
到此结束,希望能帮助你们,同时也对自己加深印象