java将组动态设置为Spring验证程序
我正在实现一个RESTAPI,在这里我必须对请求体进行一些验证。基于Json中名为“type”的字段中定义的值,我想动态地将组设置为Spring Validator
通过查看文档,我找到的唯一解决方案是在方法签名处设置@Validated注释,并对要传递给它的组进行硬编码
我从javax中找到了一个使用验证器的替代解决方案。验证包,目前我的代码如下所示:
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<EnterpriseResource>> constraintViolationSet = new HashSet<>();
if (isTypeEnterprise(enterpriseResource, EnterpriseTypeEnum.BUYER)) {
constraintViolationSet = validator.validate(enterpriseResource, BuyerEnterprise.class);
}
if (isTypeEnterprise(enterpriseResource, EnterpriseTypeEnum.PROVIDER)) {
constraintViolationSet = validator.validate(enterpriseResource, ProviderEnterprise.class);
}
if (!constraintViolationSet.isEmpty()) {
log.info("=========================ERRORS: {}", constraintViolationSet.toString());
throw new ConstraintViolationException(constraintViolationSet);
}
是否有任何变通方法可以让我使用Spring本机验证程序实例获得相同的行为
# 1 楼答案
下面是一个帮助器类,它使用spring MVC validator,并允许您以编程方式指定验证组