カスタムクラスのバリデータからグループを使用して:私たちは、検証する必要があるJSR303の検証 - 私たちはそうなどの分野が含まれ、かなり貧弱構築豆持っているユースケース持って
public class DataBean {
private boolean flag1;
private boolean flag2;
private String phone1;
private String address1;
private String city1;
private String state1;
private String phone2;
private String address2;
private String city2;
private String state2;
}
を携帯電話/住所/都市/ state [1 | 2]はフラグ[1 | 2]が真である場合のみです。悪い、悪いデザイン、付与されます。私たちのビジネス・ロジックどこで
public class DataBean {
private boolean flag1;
private boolean flag2;
@NotNull(groups = Info.First.class)
private String phone1;
@NotNull(groups = Info.First.class)
private String address1;
@NotNull(groups = Info.First.class)
private String city1;
@NotNull(groups = Info.First.class)
private String state1;
@NotNull(groups = Info.Second.class)
private String phone2;
@NotNull(groups = Info.Second.class)
private String address2;
@NotNull(groups = Info.Second.class)
private String city2;
@NotNull(groups = Info.Second.class)
private String state2;
}
:
当社の現在の戦略はそうのように、「本物」のデータフィールドのそれぞれに@NotNull(または任意の検証我々が必要)を使用して、グループインジケータを使用することですこのBean( "default"検証グループによって検証される他のさまざまなフィールドがある)を検証しているとき、 "default"グループの違反を取得し、flag1が真であるかどうかを確認します。 Info.First.class、flag2がtrueであるかどうかを確認し、Info.Second.classの検証を実行します。
ここで、カスタムクラスバリデータからこれらのグループにフックする方法はありますか?私は、flag1/flag2プロパティとそれに対応するカスタムグループを取るクラスバリデーターを持つことを想定しています。そして、isValidが呼び出されると、これらの2次/ 3次呼び出しをグループに対して行います。目的は、カスタムクラスのバリデーターがデフォルトグループにあることです。したがって、このクラスを検証するビジネスロジックは、バリデーションを個別に呼び出す必要がないため、この醜いレガシーデザインリークの詳細は持ちません。
思考?ありがとう!
私はグループ系列を調査していないが、私はそれをチェックアウトします。ありがとうございました。 – bruth
[グループシーケンス](http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#d0e968) – Will