我正在寫有Bean驗證(JSR-303)是這樣的顯式調用代碼:如何獲取ConstraintValidatorContext?
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;
}
}
注行布爾參考isValid = validator.isValid(STR,NULL); 我轉讓null
爲ConstraintValidatorContext
,因爲我發現沒有辦法獲得/構造它。在這個特殊的情況下,這個如果沒有問題,因爲在內部沒有使用ConstraintValidatorContext
,但它顯然是一個黑客。我應該如何獲得ConstraintValidatorContext
?
ADDED
我被要求提供使用情況。所以,例如,我寫了自定義驗證器,我想重新使用現有的驗證。或者我在上面描述了寫平面Java代碼,我想重新使用現有的驗證。
您可以在您的用例中添加一些細節嗎?作爲用戶,您通常通過'javax.validation.Validator' API與Bean驗證交互,而不是通過手動創建和調用約束驗證器。 'ConstraintValidatorContext'由引擎在驗證過程中傳遞給驗證器,所以它的實現通常不會暴露給用戶。 – Gunnar 2013-03-14 15:51:08
例如,我正在寫自定義驗證程序,我想重新使用現有的驗證。或者我在上面描述了寫平面Java代碼,我想重新使用現有的驗證。我將在我的文章中添加這個說明。 – alexsmail 2013-03-14 20:12:36