2

現在の状況を想像してください:

class Alpha
{
    Integer x1;
    @BiggerThan("x1")
    Integer x2;
}

@BiggerThanこのアノテーションのカスタム制約バリデーターを書きたいと思います。ただし、実装でAlphaインスタンスを取得する方法はないようです。ConstraintValidatorisValid メソッドのシグネチャは

public boolean isValid(Integer value, ConstraintValidatorContext context)

「オブジェクト所有者」パラメーターはありません。どちらかを通過する方法はないようですcontext

javax.validator フレームワークでこれを実装することはまったく可能ですか?

私は hibernate-validator を実装として使用していますが、それを変更しても構いません。必要に応じて、特定の jsr303 実装に関連付けられたハッキン​​グされたソリューションを検討します。

4

1 に答える 1

2

クラスレベルの制約として実装できます。

@BiggerThen(a = "x1", b = "x2")
class Alpha {
    Integer x1;
    Integer x2;
}

たとえば、こちらのように。

于 2011-03-03T10:18:40.367 に答える