springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理
2021-01-16 22:11
                         标签:message   ffffff   字符   err   dex   binder   container   正则表达   ext    @ 2.代码实现 Controller ? 统一异常处理 通过ControllerAdvice和@ExceptionHandler注解,在Controller中发生的异常错误就到指定异常处理方法进行处理。 springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理 标签:message   ffffff   字符   err   dex   binder   container   正则表达   ext    原文地址:https://www.cnblogs.com/Bczc/p/12922540.html
1.常见表单验证注解
 
限制 
说明 
 
@Null 
限制只能为null 
 
@NotNull 
限制必须不为null 
 
@AssertTrue 
限制必须为true 
 
@DecimalMax(value) 
限制必须为一个不大于指定值的数字 
 
@DecimalMin(value) 
限制必须为一个不小于指定值的数字 
 
@Digits(integer,fraction) 
限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction 
 
@Future 
限制必须是一个将来的日期 
 
@Max(value) 
限制必须为一个不大于指定值的数字 
 
@Min(value) 
限制必须为一个不小于指定值的数字 
 
@Past 
限制必须是一个过去的日期 
 
@Pattern(value) 
限制必须符合指定的正则表达式 
 
@Size(max,min) 
限制字符长度必须在min到max之间 
 
@NotEmpty 
验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) 
 
@NotBlank 
验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank 只应用于字符串且在比较时会去除字符串的空格 
 
@Email 
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 
新建model其中两个字段增加注解@NotBlank(message = "用户名称不能为空")
    @ApiModelProperty(value = "用户名称")
    private String userName;
    @Email(message = "请填写正确的邮箱")
    @ApiModelProperty(value = "邮箱")
    private String email;
在需要校验的model前增加@Valid 注解 @RequestMapping(method = RequestMethod.POST)
	    public String test(@Valid @RequestBody TestEntity model) {
	        try {
	            testEntityService.insert(model);
	            return "";
	        }catch (Exception e){
	            return "";
	        }
	    }
@ControllerAdvice
	public class DoControllerAdvice {
	    private static final Logger logger = LoggerFactory.getLogger(DoControllerAdvice.class);
	
	    /**
	     * @param e
	     * @return d1.framework.webapi.http.Result
	     * @Description 必填校验异常处理
	     * @Date 2019-07-30
	     */
	    @ResponseBody
	    @ExceptionHandler(value = MethodArgumentNotValidException.class)
	    public Result errorHandler(MethodArgumentNotValidException e) {
	        String errorMsg = e.getBindingResult().getAllErrors().get(0).getDefaultMessage();
	        logger.error("未处理异常", errorMsg);
	        return ResultUtil.fail(errorMsg);
	    }
	}
看一下MethodArgumentNotValidException这个类的源码 ,它继承了Exception,包含参数和错误。BindError参数实现了error。 统一异常处理类实现完成。
上一篇:PHP基础学习之数组介绍
下一篇:多维数组介绍和使用
文章标题:springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理
文章链接:http://soscw.com/index.php/essay/42897.html