#spring #hibernate #validation #hibernate-mapping #hibernate-validator
#spring #переход в спящий режим #проверка #отображение гибернации #hibernate-validator
Вопрос:
Я использую 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-адрес допустимым
логическим isValid = book.getURL(); используя hibernate URLValidator?
Ответ №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);