Java 求助

查看 49|回复 4
作者:abokchoy   
public class Test{
    private String field;
   
    private String field2;
    //自定义校验规则
    @AssertTrue(message="个人基本信息-证件号码格式错误", groups = {Group.PC.class})
    public boolean isValid() {
        return "A".equals(this.field) ? isTrue(this.field2) : true;
    }
}
public class ValidateUtil {
    public static  void validate(T t, Class... groups) throws ValidationException {
        Validator validatorFactory = Validation.buildDefaultValidatorFactory().getValidator();
        Set> errors = validatorFactory.validate(t, groups);
        if (!errors.isEmpty()) {
            for (ConstraintViolation violation : errors) {
                throw new ValidationException(violation.getMessage());
            }
        }
    }
}
我在使用 ValidateUtil.validate(test),如果函数名是 isValid()可以校验,如果不带 is ,valid()就不能校验,求指教
Belmode   
public Boolean valid() 试试
ma836323493   
那你就进到 validatorFactory.validate 看看是怎么回事
abokchoy
OP
  
@Belmode 试了,不行
abokchoy
OP
  
```java
public final  Set> validate(T object, Class... groups) {
Contracts.assertNotNull(object, Messages.MESSAGES.validatedObjectMustNotBeNull());
ValidationContext validationContext = this.getValidationContextBuilder().forValidate(object);
if (!validationContext.getRootBeanMetaData().hasConstraints()) {
return Collections.emptySet();
} else {
ValidationOrder validationOrder = this.determineGroupValidationOrder(groups);
ValueContext valueContext = ValueContext.getLocalExecutionContext(this.parameterNameProvider, object, validationContext.getRootBeanMetaData(), PathImpl.createRootPath());
return this.validateInContext(validationContext, valueContext, validationOrder);
}
}
public  ValidationContext forValidate(T rootBean) {
Class rootBeanClass = rootBean.getClass();
return new ValidationContext(this.constraintValidatorManager, this.messageInterpolator, this.constraintValidatorFactory, this.traversableResolver, (ExecutableParameterNameProvider)null, this.clockProvider, this.failFast, rootBean, rootBeanClass, this.beanMetaDataManager.getBeanMetaData(rootBeanClass), (Executable)null, (Object[])null, (Object)null);
}
```
反射拿了对象的类信息
您需要登录后才可以回帖 登录 | 立即注册

返回顶部