使用@Valid注解手动校验

王小木
2021-08-25 / 0 评论 / 143 阅读
温馨提示:
本文最后更新于2021-08-25,若内容或图片失效,请留言反馈。

使用@Valid注解去校验的时候,一般我们在controller的方法传参时就加上注解,但是在业务时有时有的字段需要校验,有时有的字段又不需要校验,又是使用同一个接口,同一个对象,很难区别开,如果在方法上加@Valid 注解就很难区分了,所以可以在业务中手动校验,分别创建两个校验的对象,根据业务配合BeanUtils.copyProperties() 将接收的表单对象复制到相应的类,再分别校验。

//手动验证 
            Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
            Set<ConstraintViolation<Object>> constraintViolations = validator
                    .validate(demandRequest);//验证某个对象,,其实也可以只验证其中的某一个属性的
            Iterator<ConstraintViolation<Object>> iter = constraintViolations
                    .iterator();
            List<String> error = new ArrayList<>();
            while (iter.hasNext()) {
                String message = iter.next().getMessage();
                error.add(message);
            }
            if (error.size() > 0) {
                throw new ScInternalExceptionV2(ScDemandExceptionEnum500.PARAMETER_ERROR, error.get(0));
            }