2

Constraint コンポジションを使用しようとしており、次の例のように、合成された各コンストレインのグループを定義したいと考えています: -

複合制約

@Target({
    ElementType.FIELD,
    ElementType.METHOD,
    ElementType.PARAMETER,
    ElementType.TYPE,
    ElementType.ANNOTATION_TYPE
})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@DummyValid1(group = Group1.class)
@DummyValid2(group = Group2.class)
@Constraint(validatedBy = {})
public @interface DummyCompositeValid {

    String message() default "The bean is invalid.";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

データ Bean

@DummyCompositeValid 
public class DummyBean {
    //Fields declaration, Setter and Getter
}

ビジネス検証方法

this.validator.validate(dummyBean, Group1.class, Group2.class);

その結果、dummyBean は検証されませんでした。次のように複合制約なしで直接定義するとグループがうまく機能するので、私は混乱しています: -

データ Bean

@DummyValid1(group = Group1.class)
@DummyValid2(group = Group2.class)
public class DummyBean {
    //Fields declaration, Setter and Getter
}

さらにアドバイスと説明を手伝っていただけますか?よろしくお願いいたします。ご連絡をお待ちしております。

よろしく、

チャーリー・チ

4

1 に答える 1

2

この質問を Hibernate バリデータ フォーラムに行いました。その結果を次のようにお知らせします。

私がやろうとしていることは不可能です。構成制約は、メインの注釈からグループを継承しています。これは仕様の一部です:

主な制約アノテーションからのグループは、構成アノテーションによって継承されます。構成アノテーションのグループ定義は無視されます。同様に、主な制約アノテーションからのペイロードは、構成するアノテーションによって継承されます。構成アノテーションのペイロード定義は無視されます。

于 2012-06-18T12:09:39.110 に答える