среда, 5 октября 2011 г.

Constraints list in JSR-303

Некоторое время назад, я написал в своём твиттере, что в JSR-303 нельзя задать два @Pattern-а с различными сообщениями на один элемент. Я был не прав и в этом посте приведу пример того как это сделать.
 
Если посмотреть на список аннотаций в JSR-303 и Hibernate Validator, то мы увидим, что каждая из аннотаций имеет и вторую очень похожу форму с суффиксом List. Например, есть Pattern и Pattern.List, Size и Size.List. Благодаря им можно для одного элемента указать несколько одинаковых ограничений:
@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:
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} подставятся соответствующие значения параметров из аннотации.

Комментариев нет:

Отправить комментарий