основанная на аннотации проверка бина Spring

исследовать основанный на аннотациях подход к проверке бинов Spring с использованиемпружинные модули, Вэтот урокв качестве примера используется следующий компонент (методы getter и setters опущены):

public final class User {  

  @NotBlank  
  @Length(max = 80)  
  private String name;  

  @NotBlank  
  @Email  
  @Length(max = 80)  
  private String email;  

  @NotBlank  
  @Length(max = 4000)  
  private String text;  
}

Сообщение об ошибке, которое используется, если определенное правило проверки не соблюдается, должно иметь следующий формат:

bean-class.bean-propery[validation-rule]=Validation Error message

Примеры для класса, показанного выше, включают:

User.email[not.blank]=Please enter your e-mail address.  
User.email[email]=Please enter a valid e-mail address.  
User.email[length]=Please enter no more than {2} characters.

Тот факт, что ключи сообщения содержат имя класса, создает пару проблем:

Если класс переименован, ключи сообщения также должны быть изменены

Если у меня есть другой класс (например, Person) со свойством электронной почты, которое проверяется идентично User.email, мне нужно дублировать сообщения, например,

Person.email [not.blank] = Пожалуйста, введите свой адрес электронной почты.

Person.email [email] = Пожалуйста, введите действительный адрес электронной почты.

Person.email [длина] = Пожалуйста, введите не более {2} символов.

Фактически, в документации утверждается, что возможно настроить сообщение по умолчанию для конкретного правила (например, @Email), например:

email=email address is invalid

Это сообщение по умолчанию следует использовать, если не удается найти специфическое для компонента сообщение для правила. Однако мой опыт показывает, что это просто не работает.

Альтернативный механизм, позволяющий избежать дублирования сообщений, заключается в передаче ключа сообщения об ошибке в аннотацию правила. Например, предположим, что я определил следующее сообщение об ошибке по умолчанию для правила @Email

badEmail=Email address is invalid

Это сообщение следует использовать, если я аннотирую соответствующее свойство следующим образом:

@Email(errorCode="badEmail")
private String email;

Однако я попробовал это, и снова, это просто неКажется, не работает. Кто-нибудь нашел способ избежать дублирования сообщений об ошибках при использовании этой структуры проверки?

Ответы на вопрос(3)

Ваш ответ на вопрос