У меня есть список объектов, которые я должен выполнить некоторые проверки наConstraintValidation не получает прикладывается к списку
@KeyValid
@Valid
protected List<KeyValue> keyValues;
и у меня есть следующая аннотация, созданная для него:
@Target({ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = KeyValidator.class)
public @interface KeyValid{
String message() default "invalid_parameter_default_message";
String[] checks() default {};
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
И это является моим валидатором:
public class KeyValidator implements ConstraintValidator<KeyValid, KeyValue> {
@Override
public void initialize(KeyValid keyValid) {
}
@Override
public boolean isValid(KeyValue keyValue, ConstraintValidatorContext constraintValidatorContext) {
return true;
}
}
Я где-то читал, что коллекции могут быть проверены навалом, если список или карта или установить помечается с помощью пользовательских ограничений, то все элементы коллекции называют валидатор, но приведенный выше код выдает следующее сообщение об ошибке
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'com.util.Validators.KeyValid' validating type 'java.util.List<com.model.KeyValue>'. Check configuration for 'keyValue'
К сожалению, я застрял на Java 7, но я прочитал об аннотациях по объявлению параметра. Выглядит неплохо. Но есть ли способ сделать что-то с Java 7, а также не могу добавить аннотацию к классу напрямую, потому что это сгенерированный источник. –
Вы можете использовать API-интерфейс Hibernate Validator для описания программных ограничений, чтобы добавить ограничение к определению класса KeyValue. Таким образом, вам не нужно прикасаться к исходному коду и просто проверять список через '@ Valid'. – Gunnar