Как получить значение проверенного ввода при использовании @Pattern? - PullRequest
0 голосов
/ 12 октября 2018

Я использую @Pattern, чтобы проверить, что вход соответствует IP-адресу:

@Pattern(regexp = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$",message = "Invalid IP Address! {validation.value}")

Есть ли способ сообщить пружине, чтобы получить фактическое значение в сообщении?

Прямо сейчас я получаю:

javax.validation.ConstraintViolationException: controllerMethod.ip: Invalid IP Address! {validation.value}

Но я хочу

javax.validation.ConstraintViolationException: controllerMethod.ip: Invalid IP Address! BlaBlaBla 

1 Ответ

0 голосов
/ 12 октября 2018
@Pattern(regexp = "...", message = "Invalid IP Address! ${validatedValue}")

У меня были сомнения относительно способности Spring анализировать выражение SpEL в сообщениях проверки по умолчанию.

Во время отладки мне удалось выяснить, что в контексте оценки известно множество свойств.включая regexp, payload, flags, groups, validatedValue и message (специально для @Pattern).

Вы можете включить любой из них в @Pattern#messageокружив имя ${...}.

Поскольку Spring использует Hibernate Validator в качестве эталонной реализации JSR-303 / JSR-349 по умолчанию, стоит прочитать документацию по Hibernate: Глава 4. Интерполяция сообщений об ошибках ограничения .

...