我正在编写对 Bean Validation (JSR-303) 进行显式调用的代码,如下所示:
public class Example {
@DecimalMin(value = "0")
private static final String ANNOTATED = "";
public void isPossitiveNumber(String str){
ValidatorFactory factory =
Validation.buildDefaultValidatorFactory();
ConstraintValidator<DecimalMin, String>
validator =
factory.getConstraintValidatorFactory().getInstance(
DecimalMinValidatorForString.class);
validator.initialize(
ReflectionUtils.findField(getClass(), "ANNOTATED")
.getAnnotation(
DecimalMin.class));
boolean isValid = validator.isValid(str, null);
return isValid;
}
}
注意这一行boolean isValid = validator.isValid(str, null);
我转移null
是ConstraintValidatorContext
因为我没有办法获得/建造它。在这种特殊情况下,这很好,因为内部没有使用ConstraintValidatorContext
,但很明显是一个hack。我应该如何获得ConstraintValidatorContext
?
添加
我被要求提供用例。因此,例如,我正在编写自定义验证器,并且我想重用现有的验证。或者我正在编写上面描述的平面 Java 代码,我想重用现有的验证。