JSR-303 を使用してちょっとしたカスタム検証を行いたいと思っていますjavax.validation
。
フィールドがあります。このフィールドに特定の値が入力された場合は、他のいくつかのフィールドには入力されないことを要求しますnull
。
私はこれを理解しようとしています。説明を見つけるのに役立つように、これを何と呼ぶべきか正確にはわかりません。
どなたか助けていただければ幸いです。私はこの分野にかなり不慣れです。
現時点では、カスタム制約を考えています。しかし、アノテーション内から依存フィールドの値をテストする方法がわかりません。基本的に、アノテーションからパネル オブジェクトにアクセスする方法がわかりません。
public class StatusValidator implements ConstraintValidator<NotNull, String> {
@Override
public void initialize(NotNull constraintAnnotation) {}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if ("Canceled".equals(panel.status.getValue())) {
if (value != null) {
return true;
}
} else {
return false;
}
}
}
それがpanel.status.getValue();
問題なのです。どうすればこれを実現できるのか分かりません。
ベストアンサー1
true と検証する必要があるメソッドを定義し、@AssertTrue
その上にアノテーションを配置します。
@AssertTrue
private boolean isOk() {
return someField != something || otherField != null;
}
メソッドは「is」で始まる必要があります。