@NotBlank @NotNull @NotBlank校验非空注解怎么获得自定义message

由于我们提交的表单中字段通常都比较多,如果一个一个的去判断是否为空太麻烦,所以我们通常会使用@NotBlank @NotNull @NotBlank注解校验参数,但字段为空时会抛出MethodArgumentNotValidException异常,包含的信息太多,我们仅需要获取到自定的message返回给前端即可
@NotBlank @NotNull @NotBlank校验非空注解怎么获得自定义message_第1张图片

org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [1] in public com.cvc.training.result.Result com.cvc.training.controller.ManagerController.changePassword(java.lang.String,com.cvc.training.dto.manager.ChangePassDto) with 4 errors: [Field error in object 'changePassDto' on field 'mobile': rejected value [null]; codes [NotBlank.changePassDto.mobile,NotBlank.mobile,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [changePassDto.mobile,mobile]; arguments []; default message [mobile]]; default message [手机号码不能为空]] [Field error in object 'changePassDto' on field 'rePassword': rejected value [null]; codes [NotBlank.changePassDto.rePassword,NotBlank.rePassword,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [changePassDto.rePassword,rePassword]; arguments []; default message [rePassword]]; default message [新密码不能为空]] [Field error in object 'changePassDto' on field 'password': rejected value [null]; codes [NotBlank.changePassDto.password,NotBlank.password,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [changePassDto.password,password]; arguments []; default message [password]]; default message [新密码不能为空]] [Field error in object 'changePassDto' on field 'Code': rejected value [null]; codes [NotBlank.changePassDto.Code,NotBlank.Code,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [changePassDto.Code,Code]; arguments []; default message [Code]]; default message [验证码不能为空]] 

在这里插入图片描述

我们可以自定义一个全局的异常处理,这里直接贴代码了

@RestControllerAdvice
public class ExceptionHandle {

    private final static Logger logger= LoggerFactory.getLogger(ExceptionHandle.class);

    @ResponseBody
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public Result exceptionHandler(MethodArgumentNotValidException e)
    {
        return ResultUtil.error(ResultEnum.WRONG_REQUEST_PARAMETER.getCode(),e.getBindingResult().getFieldError().getDefaultMessage());
    }
}

其中e.getBindingResult().getFieldError().getDefaultMessage()就是获取我们自定义的异常信息
备注:

  1. 如果抛出的是BlndException异常我们也是使用相同的方式获取到自定义的异常信息
  2. 如果需要这几个注解生效我们需要在controller层配合@Valid和 @Validated注解配合使用
    如需了解两者之间的区别可以参考:@Validated和@Valid的区别以及嵌套验证
  3. 注解所用包:import javax.validation.constraints.*;

如需了解@NotNull, @NotEmpty和@NotBlank三者区别可以点此查看:
@NotNull, @NotEmpty和@NotBlank三者区别

参考文章
springBoot获取@NotBlank,@NotNull注解的message信息
校验非空的注解@NotNull怎么取得自定义的message

原文链接

你可能感兴趣的:(@NotBlank @NotNull @NotBlank校验非空注解怎么获得自定义message)