Изменить @Pattern Regex Java Validator на основе входного значения - PullRequest
0 голосов
/ 05 декабря 2018

Я использую класс Java Validator для проверки некоторых полей ввода из моего класса Spring Object.Я проверяю URI, и они могут быть в любом формате, http: / myURL / uri или readFromURI.v1.Первоначально я только проверял первую часть, поэтому мой класс Object имел:

@Pattern(regexp="[\\w\\s.,;:*&@(){}+-=?/|!\\[\\]%#$~]{0,512}", message="incorrect format")
private String URI;

Теперь, если пользователь установит флажок в моем приложении, он введет значение в качестве второго формата, поэтому ясоздал новое регулярное выражение:

@Pattern.List({
  @Pattern(regexp="[\\w\\s.,;:*&@(){}+-=?/|!\\[\\]%#$~]{0,512}", message="incorrect format"),
  @Pattern(regexp="^\"(Create|Read|Update|Delete)[a-zA-Z]+.*vd+\"${0,512}", message="incorrect format")
})
private String URI;

Регулярное выражение, вероятно, неправильно для второй части, и я, вероятно, задам этот вопрос позже.Но теперь, когда я проверяю любой из этих форматов, он не соответствует обоим условиям.Поэтому я предполагаю, что так, как я написал, он пытается применить оба регулярных выражения.Как я могу выбрать один на основе значения?Это поле значения находится в том же классе, если это помогает:

private String URI;
private boolean useHttp; //if true, validate using [\\w\\s.,;:*&@(){}+-=?/|!\\[\\]%#$~]{0,512}

1 Ответ

0 голосов
/ 06 декабря 2018

Вы должны написать собственный валидатор, как объяснено здесь :

  1. Создать новую аннотацию CustomConstraint с аннотацией @Constraint(validatedBy = CustomConstraintValidator.class)
  2. Есть некоторый классCustomConstraintValidator реализует ConstraintValidator<CustomConstraint, YourType>
  3. Аннотировать YourType с помощью @CustomConstraint
  4. Выполните проверку в вашем CustomConstraintValidator в зависимости от значения вашего компонента.

Ваша проверка сможет проверить любое поле, которое вы хотите проверить (я не помню, проходят ли ограничения уровня класса после каждого прохода аннотации на уровне поля, поэтому вам, возможно, придется проверить, не является ли URI null).

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