在spring-boot中手动调用Hibernate URL验证器

时间:2016-10-17 15:24:55

标签: spring hibernate validation hibernate-mapping 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) {
}
}

如何检查网址是否有效 布尔值isValid = book.getUrl(); 使用hibernate URLValidator

1 个答案:

答案 0 :(得分: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);