JSR 303 検証、1 つのフィールドが「何か」に等しい場合、他のフィールドは null であってはなりません。質問する

JSR 303 検証、1 つのフィールドが「何か」に等しい場合、他のフィールドは null であってはなりません。質問する

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」で始まる必要があります。

おすすめ記事