Вручную вызовите валидатор URL-адреса Hibernate в spring-boot

Я использую spring-boot 1.4.0 и hibernate-validator 5.2.0. У меня есть модель, которая содержит настраиваемый валидатор внутри настраиваемого валидатора. Я хочу проверить, является ли значение свойства допустимым URL-адресом, для которого мне нужно вызвать URLValidator в спящем режиме, но не повезло. Может ли кто-нибудь помочь мне решить эту проблему

CustomValidator.java

@Component
public class BookValidator extends GenericValidator<Book,    ConstraintValidatorContext> implements ConstraintValidator<ValidBooks,  List<Book>> {


public BookValidator() {
    addValidators();
}

private void addValidators() {
 getValidators().add((book, context) -> {
        boolean isValid = book.getUrl(); //here i want to check against Hibernate URL validator 
        if (!isValid) {
            context.disableDefaultConstraintViolation();
            context
                    .buildConstraintViolationWithTemplate("Book URL should be valid!")
                    .addConstraintViolation();
        }
        return isValid;
    });
}
@Override
public void initialize(ValidBooks constraintAnnotation) {
}
}

Как я могу проверить, является ли URL-адрес допустимым boolean isValid = book.getUrl(); с помощью hibernate URLValidator?


person VelNaga    schedule 17.10.2016    source источник


Ответы (1)


Это работает:

AnnotationDescriptor<URL> descriptor = new AnnotationDescriptor<URL>( URL.class ); 
URL url = AnnotationFactory.create(descriptor);
URLValidator urlValidator = new URLValidator();
urlValidator.initialize(url);

boolean isValid = urlValidator.isValid(book.getUrl(), context);
person Alex    schedule 13.04.2017