这里写自定义目录标题
标签含义
限制 | 说明 |
---|---|
@Null | 限制只能为null |
@NotNull | 限制必须不为null |
@AssertFalse | 限制必须为false |
@AssertTrue | 限制必须为true |
@DecimalMax(value) | 限制必须为一个不大于指定值的数字 |
@DecimalMin(value) | 限制必须为一个不小于指定值的数字 |
@Digits(integer,fraction) | 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
@Future | 限制必须是一个将来的日期 |
@Max(value) | 限制必须为一个不大于指定值的数字 |
@Min(value) | 限制必须为一个不小于指定值的数字 |
@Past | 限制必须是一个过去的日期 |
@Pattern(value) | 限制必须符合指定的正则表达式 |
@Size(max,min) | 限制字符长度必须在min到max之间 |
@Past | 验证注解的元素值(日期类型)比当前时间早 |
@NotEmpty | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@NotBlank | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 |
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |
Validated参数校验
@PostMapping("/updateCart")
public ApiResponse updateCart( @RequestBody @Validated CartRequestVO request, BindingResult result) {
ValidationUtil.validationBodyException(result);
return new ApiResponse (apiResponse .getErrcode(),apiResponse .getErrmsg());
}
全局捕获异常
@Slf4j
@RestController
@ControllerAdvice
public class ExceptionAdviceConfiguration {
@ExceptionHandler(BException.class)
ApiResponse runtimeExceptionHandler(HttpServletRequest request, BException exception) {
return ApiResponse(exception.getCode(), exception.getMessage());
}
}
实体类
@Data
@ToString
public class CartRequestVO {
/**
* 商品id
*/
@NotNull(message = "goodsId不能为空!")
@Min(value = 1,message = "非法的goodsId!")
private Integer goodsId;
/**
* 选择标记
*/
private Boolean selectedFlag;
/**
* 全选
*/
private Boolean selectAll;
/**
* 选择num
*/
//private int selectedNum;
/**
* 类型
*/
@NotNull(message = "类型不能为空!")
private Integer promType;
/**
* 购买数量
*
*/
@NotNull(message = "购买数量 不存在!")
@Min(value = 1,message = "购买数量异常!")
private Integer buyNum;
}
错误信息处理类
public class ValidationUtil {
/**
* 校验错误拦截处理
*
* @param result 错误信息集合
* @return 错误信息
*/
public static void validationBodyException(BindingResult result){
if (result.hasErrors()) {
List<FieldError> fieldErrors = result.getFieldErrors();
if (fieldErrors != null && fieldErrors.size() > 0){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < fieldErrors.size(); i++) {
sb.append(fieldErrors.get(i).getField()).append(fieldErrors.get(i).getDefaultMessage()).append(";");
}
throw new BException(sb.toString());
}
}
}
}
返回
{
"statusCode": 28110101,
"message": "buyNum购买数量异常!;goodsIdgoodsId不能为空!;",
"data": null,
}