Некоторое время назад, я написал в своём твиттере, что в JSR-303 нельзя задать два @Pattern-а с различными сообщениями на один элемент. Я был не прав и в этом посте приведу пример того как это сделать.
Если посмотреть на список аннотаций в JSR-303 и Hibernate Validator, то мы увидим, что каждая из аннотаций имеет и вторую очень похожу форму с суффиксом List. Например, есть Pattern и Pattern.List, Size и Size.List. Благодаря им можно для одного элемента указать несколько одинаковых ограничений:
Не совсем относящееся к посту, но не менее важная часть это локализованные сообщения, которые извлекаются по соответствующему ключу из файла ValidationMessages.properties:
Обратите внимание, что: а) файл этот должен находиться в корне classpath-а б) Messages с буковкой s на конце, т.е. во множественном числе.
В ваше сообщение, вместо {min} и {max} подставятся соответствующие значения параметров из аннотации.
Если посмотреть на список аннотаций в JSR-303 и Hibernate Validator, то мы увидим, что каждая из аннотаций имеет и вторую очень похожу форму с суффиксом List. Например, есть Pattern и Pattern.List, Size и Size.List. Благодаря им можно для одного элемента указать несколько одинаковых ограничений:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Size.List({ | |
@Size(min = COUNTRY_MIN_LENGTH, message = "{value.too-short}"), | |
@Size(max = COUNTRY_MAX_LENGTH, message = "{value.too-long}") | |
}) | |
private String country; |
Не совсем относящееся к посту, но не менее важная часть это локализованные сообщения, которые извлекаются по соответствующему ключу из файла ValidationMessages.properties:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
value.too-long = Value is greater than allowable maximum of {min} characters | |
value.too-short = Value is less than allowable minimum of {max} characters |
Обратите внимание, что: а) файл этот должен находиться в корне classpath-а б) Messages с буковкой s на конце, т.е. во множественном числе.
В ваше сообщение, вместо {min} и {max} подставятся соответствующие значения параметров из аннотации.
Комментариев нет:
Отправить комментарий