Я хотел бы использовать 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]