Как разрешить определенные слова, используя javax.validation.constraints.Pattern? - PullRequest
1 голос
/ 21 октября 2019

Я хотел бы использовать javax.validation.constraints.Pattern для проверки. Текст не должен быть ни тем, ни другим.

Допустимые примеры:

  • что-то
  • слово

НЕ разрешено:

  • нет
  • другие

Я стараюсь, но не понимаю, в чем проблема. Что-то вроде:

@NotNull
@Pattern(regexp = "(^none)")
String  countryValue;

Спасибо за Вашу подсказку.

ОБНОВЛЕНИЕ: Как сказал Аниш с онлайн-валидатором регулярных выражений, регулярное выражение ^(?!others|none) должно быть правильным. Но Spring-MVC по-прежнему отрицается. Есть ли специальный синтаксис для использования? Я даю больше кода, чтобы увеличить картинку:

Контроллер:

@PostMapping
public String post(@ModelAttribute @Valid DisclaimerFormDto disclaimerForm, BindingResult errors, ModelMap modelMap) {
    if(errors.hasErrors()) {
        errors.getAllErrors().forEach(System.out::println);
        return "redirect:/disclaimer";
    }
    return "redirect:/product";
}

FormDto (с изменениями, упомянутыми от Anish):

@Data
@ToString
public class DisclaimerFormDto {
    @NotNull
    @Pattern(regexp = "^(?!others|none)")
    String  countryValue;
}

Вывод BindingResult:

Field error in object 'disclaimerFormDto' on field 'countryValue': rejected value [none]; codes [Pattern.disclaimerFormDto.countryValue,Pattern.countryValue,Pattern.java.lang.String,Pattern]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [disclaimerFormDto.countryValue,countryValue]; arguments []; default message [countryValue],[Ljavax.validation.constraints.Pattern$Flag;@59374db6,^(?!(none|others)$).*$]; default message [muss auf Ausdruck "^(?!(none|others)$).*$" passen]

1 Ответ

1 голос
/ 21 октября 2019

Попробуйте с этим:

@NotNull
// @Pattern(regexp = "^(?!others|none)")
// updated to take any kind of string to match.
@Pattern(regexp = "^((?!(none|others)).)*$")  
private String countryValue;

Проверьте этот пример регулярного выражения здесь: ^ ((?! (None | others)).) * $

Контрольный пример 1: строка типа «abc»

Снимок экрана:

enter image description here

Контрольный пример 2: строка типа "abc others "," abc none "," none "или" words "

enter image description here

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