我有一個問題,將javax註釋與自定義ConstraintValidators結合起來。來自javax.validation.constraints的註解與自定義ConstraintValidator的組合
我有一個類Person的例子,其中的名稱和年齡是必需的。
@PersonConstraint
public class Person {
@NotNull
private String name;
@NotNull
private Integer age;
...
}
而且我有一個額外的約束:
@Constraint(validatedBy = PersonValidator.class)
@Target(TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface PersonConstraint{
String message() default "...";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
對於自定義驗證:
public class PersonValidator implements ConstraintValidator<PersonConstraint, Person> {
...
@Override
public boolean isValid(Person value, ConstraintValidatorContext context) {
if(value.getAge() < 18)
return false;
...
}
}
當一個人現在對象驗證,年齡爲空時,我得到了一個空指針PersonValidator中的異常。我想知道,這是由javax Annoation @NotNull檢查的東西。 是否有解決方案將註釋與自定義驗證器相結合,還是我必須自己檢查驗證器中的空值?
(該代碼只是一個例子 - 但是這是一個普遍的問題)
你的意思是說,你需要控制的驗證正確的順序? –
是的,那是我的本意。 – MarryS
它不是正確的答案,但爲了使事情變得簡單,你可以在'PersonValidator'類本身驗證這裏的空檢查嗎? –