2

私の質問は、これの分岐です。

検証したい注釈 (電話注釈など) があります。@phone バリデーターを使用して、電話オブジェクトが有効かどうかを確認できます。電話を含む連絡先情報オブジェクトにもこのバリデーターを配置できるようにしたいと考えています。電話オブジェクトと連絡先情報オブジェクトに @phone を使用できるように、1 つの注釈に複数のバリデーターを使用する方法はありますか?

何かうまくいき
@Constraint(validatedBy = {PhoneIsValid.class, PhoneIsValid2.class})
ますか?(一方の Validator が電話オブジェクトを処理し、もう一方が連絡先情報オブジェクトを処理するという考え方です。)

4

1 に答える 1

6

同じ注釈タイプに対して複数のバリデーターを持つことができます。あなたが述べたように、@Constraint注釈でそれらすべてを定義しました。

注釈:

@Documented
@Target({ ElementType.ANNOTATION_TYPE, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = { ValidPhonePhoneValidator.class, ValidPhoneContactValidator.class })
public @interface ValidPhone {

  String message() default "";
  Class<?>[] groups() default { };
  Class<? extends Payload>[] payload() default { };
} 

バリデーター1:

public class ValidPhonePhoneValidator implements ConstraintValidator<ValidPhone, Phone> { ... }

バリデータ2:

public class ValidPhoneContactValidator implements ConstraintValidator<ValidPhone, Contact> { ... }
于 2013-05-07T10:00:41.490 に答える