Validated参数校验

标签含义

限制说明
@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验证注解的元素值是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,
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TizzyGoodhealth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值