在实体类的属性上面添加 @NotNull注解,并在message 内填上要提示的内容实体类的标注就完成了。
- @Data
- public class RepliesDto {
-
-
- @NotNull(message = "评论内容不能为空")
- private String content;
-
- @NotNull(message = "文章资讯ID不能为空")
- private Integer infoId;
-
- }
控制器的参数上增加@Valid注解它便会进行对该参数进行检验。
- @PostMapping
- public Result saveReplies(@RequestBody @Valid RepliesDto repliesDto) {
- return repliesService.saveReplies(repliesDto);
- }
在全局异常处添加参数异常这一异常类即可。
- @RestControllerAdvice
- public class GlobalException {
-
-
- /**
- * 处理MethodArgumentNotValidException类型的异常
- * @param e
- */
- @ExceptionHandler(MethodArgumentNotValidException.class)
- public Result handlerMethodArgumentException(MethodArgumentNotValidException e){
- e.printStackTrace();
-
- Map<String, String> map = e.getBindingResult()
- .getFieldErrors()
- .stream()
- .collect(Collectors.toMap(FieldError::getField, FieldError::getDefaultMessage));
- return Result.fail(ResultCode.PARAM_IS_INVALID,map);
- }
-
-
- }
配置了快速失败在匹配完第一个失败了之后,程序会进入快速失败,快速失败之后它不会再匹配之后的参数。
- @Configuration
- public class FastError {
-
- @Bean
- public Validator validator(){
- ValidatorFactory factory = Validation.byProvider(HibernateValidator.class)
- .configure()
- .failFast(true)
- .buildValidatorFactory();
- Validator validator = factory.getValidator();
- return validator;
- }
-
- }