Как я могу проверить коллекцию строки и каждого элемента в виде URL? - PullRequest
1 голос
/ 30 апреля 2019

Я хочу проверить URL в Collection<String>.Каждый элемент - это URL, который я получаю в виде строки в форме.

@Valid
@URL
@ElementCollection 
public Collection<String> getPictures() {       
    return this.pictures;   
}

public void setPictures(final Collection<String> pictures) {         
      this.pictures = pictures;     
}

Я хочу знать, есть ли какая-то аннотация в Spring, которая позволяет мне проверять все строки в этой коллекции, такие как URL

1 Ответ

1 голос
/ 30 апреля 2019

Нет аннотации, которая проверяет поле напрямую. Идея пользовательской аннотации @URL совершенно верна, но вы должны реализовать саму валидацию - аннотация - это просто знак того, что «с этим что-то должно случиться».

Я предлагаю переименовать @URL в @URLCollection, чтобы избежать конфликта с классом java.net.URL. Начните с определения аннотации. Не забудьте аннотацию @Constraint (посмотрите в ее документации, чтобы узнать, как правильно определить пользовательскую аннотацию проверки):

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = UrlCollectionValidator.class)     // will be created below
public @interface URLCollection {
    String message() default "default error message";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

Затем продолжите реализацию ConstraintValidator:

public class UrlCollectionValidator implements ConstraintValidator<URLCollection, Collection<String>> {

    @Override
    public void initialize(URLCollectionconstraint) { }

    @Override
    public boolean isValid(Collection<String> urls, ConstraintValidatorContext context) {
        return // the validation logics
    }
}

Ну вот и все. Подробнее об этом читайте в Настройка пользовательских ограничений в документации Spring:

Каждое ограничение проверки bean-компонента состоит из двух частей: * A @Constraint аннотация, которая объявляет ограничение и его настраиваемые свойства. * Реализация интерфейса javax.validation.ConstraintValidator, который реализует поведение ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...