@Documented @Target(value=ANNOTATION_TYPE) @Retention(value=RUNTIME) public @interface 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
ConstraintValidators are attached to the
constraint, one targeting ValidationTarget.ANNOTATED_ELEMENT
and one targeting ValidationTarget.PARAMETERS,ConstraintValidator targets both
ANNOTATED_ELEMENT and PARAMETERS.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 {};
}
| Modifier and Type | Required Element and Description |
|---|---|
Class<? extends ConstraintValidator<?,?>>[] |
validatedBy
ConstraintValidator classes implementing the constraint. |
public abstract Class<? extends ConstraintValidator<?,?>>[] validatedBy
ConstraintValidator classes implementing the constraint. The given classes
must reference distinct target types for a given ValidationTarget. If two
ConstraintValidators 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.
ConstraintValidator classes implementing the constraintComments to: bean-validation-dev@eclipse.org.
Copyright © 2019,2020 Eclipse Foundation.
Use is subject to EFSL; this spec is based on material that is licensed under the Apache License, version 2.0.