逆态度 SpringBoot Hibernate Validator 参数验证

Hibernate Validator

Hibernate Validator是SpringBoot内置的校验框架,只要集成了SpringBoot就自动集成了它,我们可以通过在对象上面使用它提供的注解来完成参数校验

常用注解

@Null:被注释的属性必须为null;
@NotNull:被注释的属性不能为null;
@AssertTrue:被注释的属性必须为true;
@AssertFalse:被注释的属性必须为false;
@Min:被注释的属性必须大于等于其value值;
@Max:被注释的属性必须小于等于其value值;
@Size:被注释的属性必须在其min和max值之间;
@Pattern:被注释的属性必须符合其regexp所定义的正则表达式;
@NotBlank:被注释的字符串不能为空字符串;
@NotEmpty:被注释的属性不能为空;
@Email:被注释的属性必须符合邮箱格式。

实例

/**
 * 参数校验测试参数
 */
public class TestParame {
    @NotEmpty(message = "名称不能为空")
    private String name;
    @Min(value = 0, message = "排序最小为0")
    private Integer sort;
    @FlagValidator(value = {"0","1"}, message = "显示状态不正确")
    private Integer showStatus;
}

/**
 * HibernateValidator错误结果处理切面(返回统一处理结果)
 * Create By lwj 2020.6.28
 */
@Aspect
@Component
@Order(2)
public class HibernateValidatorAspect {
    @Pointcut("execution(public * com.mbl.base.modular.*.controller.*.*(..))")
    public void BindingResult() {
    }

    @Around("BindingResult()")
    public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
        Object[] args = joinPoint.getArgs();
        for (Object arg : args) {
            if (arg instanceof BindingResult) {
                BindingResult result = (BindingResult) arg;
                if (result.hasErrors()) {
                    FieldError fieldError = result.getFieldError();
                    if(fieldError!=null){
                        return MR.err(400, fieldError.getDefaultMessage());
                    }else{
                        return MR.err(500, "网络异常!");
                    }
                }
            }
        }
        return joinPoint.proceed();
    }
}



@ApiOperation(value = "参数测试")
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public CommonResult test(@Validated @RequestBody TestParame testParame, BindingResult result) {
	// 如果不加 BindingResult 参数,则如果参数校验失败不会进入该方法体
	// 如果拥有 BindingResult 参数,则BindingResult参数会带着校验结果执行方法体(需要自行进行参数校验结果处理)
    return result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值