パッケージ 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
必須定数のサマリー
必須要素 修飾子と型 必須要素 説明 ClassSE<? extends ConstraintValidator<?,?>>[]
validatedBy
制約を実装するConstraintValidator
クラス。
要素の詳細
validatedBy
ClassSE<? extends ConstraintValidator<?,?>>[] validatedBy
制約を実装するConstraintValidator
クラス。指定されたクラスは、指定されたValidationTarget
の異なるターゲット型を参照する必要があります。2 つのConstraintValidator
が同じ型を参照している場合、例外が発生します。メソッドまたはコンストラクターのパラメーターの配列(クロスパラメーター)をターゲットとする最大 1 つの
ConstraintValidator
が受け入れられます。2 つ以上存在する場合、例外が発生します。- 戻り値:
- 制約を実装する
ConstraintValidator
クラスの配列