Я хочу подтвердить, если два аргумента getCategories()
соответствуют моим ожиданиям. Я создал валидатор:
@Constraint(validatedBy = EnvironmentIdValidator.class)
@Target({METHOD, CONSTRUCTOR})
@Retention(RUNTIME)
@Documented
public @interface IEnvironmentIdValidator {
String message() default "Invalid environment ID.";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String[] value();
}
И реализация:
@SupportedValidationTarget(ValidationTarget.PARAMETERS)
public class EnvironmentIdValidator implements ConstraintValidator<IEnvironmentIdValidator,Object[]> {
@Override
public void initialize(IEnvironmentIdValidator constraintAnnotation) {
// logic
}
@Override
public boolean isValid(Object[] object, ConstraintValidatorContext constraintValidatorContext) {
// logic
}
}
Я вызываю этот валидатор на одной из моих конечных точек с аннотацией, одновременно передавая два параметра.
@IEnvironmentIdValidator(value = {"environmentID", "requestAuthorizationHeader"})
public ResponseEntity<?> getCategories(@PathVariable(name = "environmentID") Long environmentID,
@RequestHeader("Authorization") String requestAuthorizationHeader) {
//...
}
Но, к сожалению, валидатор не запускается. Что я, возможно, делаю не так?