标签:message ffffff 字符 err dex binder container 正则表达 ext
@
限制 | 说明 |
---|---|
@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,也可以通过正则表达式和flag指定自定义的email格式 |
2.代码实现
新建model其中两个字段增加注解
@NotBlank(message = "用户名称不能为空")
@ApiModelProperty(value = "用户名称")
private String userName;
@Email(message = "请填写正确的邮箱")
@ApiModelProperty(value = "邮箱")
private String email;
Controller
在需要校验的model前增加@Valid 注解
?
@RequestMapping(method = RequestMethod.POST)
public String test(@Valid @RequestBody TestEntity model) {
try {
testEntityService.insert(model);
return "";
}catch (Exception e){
return "";
}
}
统一异常处理
通过ControllerAdvice和@ExceptionHandler注解,在Controller中发生的异常错误就到指定异常处理方法进行处理。
@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。 统一异常处理类实现完成。
springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理
标签:message ffffff 字符 err dex binder container 正则表达 ext
原文地址:https://www.cnblogs.com/Bczc/p/12922540.html