Marks an annotation as being a Jakarta Validation constraint.
A given constraint annotation must be annotated by a @Constraint
annotation which refers to its list of constraint validation implementations.
Each constraint annotation must host the following attributes:
String message() default [...];
which should default to an error message key made of the fully-qualified class name of the constraint followed by.message
. For example"{com.acme.constraints.NotSafe.message}"
Class<?>[] groups() default {};
for user to customize the targeted groupsClass<? extends Payload>[] payload() default {};
for extensibility purposes
When building a constraint that is both generic and cross-parameter, the constraint
annotation must host the validationAppliesTo()
property.
A constraint is generic if it targets the annotated element and is cross-parameter if
it targets the array of parameters of a method or constructor.
ConstraintTarget validationAppliesTo() default ConstraintTarget.IMPLICIT;This property allows the constraint user to choose whether the constraint targets the return type of the executable or its array of parameters. A constraint is both generic and cross-parameter if
- two kinds of
ConstraintValidator
s are attached to the constraint, one targetingValidationTarget.ANNOTATED_ELEMENT
and one targetingValidationTarget.PARAMETERS
, - or if a
ConstraintValidator
targets bothANNOTATED_ELEMENT
andPARAMETERS
.
SupportedValidationTarget
for more info.
Here is an example of constraint definition:
@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 {}; }
-
Required Element Summary
Modifier and TypeRequired ElementDescriptionClass<? extends ConstraintValidator<?,
?>>[] ConstraintValidator
classes implementing the constraint.
-
Element Details
-
validatedBy
Class<? extends ConstraintValidator<?,?>>[] validatedByConstraintValidator
classes implementing the constraint. The given classes must reference distinct target types for a givenValidationTarget
. If twoConstraintValidator
s refer to the same type, an exception will occur.At most one
ConstraintValidator
targeting the array of parameters of methods or constructors (aka cross-parameter) is accepted. If two or more are present, an exception will occur.- Returns:
- array of
ConstraintValidator
classes implementing the constraint
-