パッケージ jakarta.validation

アノテーション型 Constraint


  • @DocumentedSE
    @TargetSE(ANNOTATION_TYPESE)
    @RetentionSE(RUNTIMESE)
    public @interface Constraint
    アノテーションを Jakarta Bean Validation 制約としてマークします。

    特定の制約アノテーションは、制約検証実装のリストを参照する @Constraint アノテーションによってアノテーションを付ける必要があります。

    各制約アノテーションは、次の属性をホストする必要があります。

    • String message() default [...]; は、デフォルトで、制約の完全修飾クラス名とそれに続く .message で構成されるエラーメッセージキーになります。たとえば "{com.acme.constraints.NotSafe.message}"
    • ユーザーがターゲットグループをカスタマイズするための Class<?>[] groups() default {}; 
    • 拡張性を目的とした Class<? extends Payload>[] payload() default {}; 

    ジェネリクスとクロスパラメーターの両方である制約を作成する場合、制約アノテーションは validationAppliesTo() プロパティをホストする必要があります。制約は、アノテーション付き要素を対象とする場合は一般的であり、メソッドまたはコンストラクターのパラメーターの配列を対象とする場合はクロスパラメーターです。

         ConstraintTarget validationAppliesTo() default ConstraintTarget.IMPLICIT;
     
    このプロパティを使用すると、制約のユーザーは、制約が実行可能ファイルの戻り値の型をターゲットにするか、パラメーターの配列をターゲットにするかを選択できます。次の場合、制約は一般的であり、クロスパラメーターです。
    • 2 種類の ConstraintValidator が制約にアタッチされています。1 つは ValidationTarget.ANNOTATED_ELEMENT をターゲティングし、もう 1 つは ValidationTarget.PARAMETERS をターゲティングします。
    • または、ConstraintValidator が ANNOTATED_ELEMENT と PARAMETERS の両方をターゲットとする場合。
    このような二重の制約はまれです。詳細については、SupportedValidationTarget を参照してください。

    制約定義の例を次に示します。

     @Documented
     @Constraint(validatedBy = OrderNumberValidator.class)
     @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
     @Retention(RUNTIME)
     public @interface OrderNumber {
         String message() default "{com.acme.constraint.OrderNumber.message}";
         Class<?>[] groups() default {};
         Class<? extends Payload>[] payload() default {};
     }
     
    作成者:
    Emmanuel Bernard, Gavin King, Hardy Ferentschik
    • 要素の詳細

      • validatedBy

        ClassSE<? extends ConstraintValidator<?,​?>>[] validatedBy
        制約を実装する ConstraintValidator クラス。指定されたクラスは、指定された ValidationTarget の異なるターゲット型を参照する必要があります。2 つの ConstraintValidator が同じ型を参照している場合、例外が発生します。

        メソッドまたはコンストラクターのパラメーターの配列(クロスパラメーター)をターゲットとする最大 1 つの ConstraintValidator が受け入れられます。2 つ以上存在する場合、例外が発生します。

        戻り値:
        制約を実装する ConstraintValidator クラスの配列