javax.validation как нацелить на другую локаль? - PullRequest
0 голосов
/ 03 апреля 2012

Я проверяю двумя способами - используя пружинный валидатор для пользовательской проверки и javax.validation для быстрой и общей

Spring делает все аккуратно, где этот код будет идти именно к документу с заданным языковым стандартом и извлекать необходимый текст.

 private Errors checkPasswordMatch(Person p, Errors errors) {
   if (!p.getPassword().equals(p.getRepeatedPassword())) {
   errors.rejectValue("password", "person.password.mismatch");
   errors.rejectValue("repeatedPassword", "person.password.mismatch");
    }
    return errors;
}

Javax не доставляет хлопот, но нет возможности создавать сообщения на разных языках.

    @NotNull
    @Size(min = 10, max = 10, message = "size must be 10 characters")
    protected String birthDate;

Как посоветовать javax перейти на некоторые GB.properties или US.propertiesили файл IT.properties для извлечения сообщений так же, как Spring в зависимости от локали пользователя?

Ответы [ 2 ]

5 голосов
/ 03 апреля 2012
@Size(min = 10, max = 10, message = "{birthDate.size}")
protected String birthDate;

in (создайте его в classpath, если у вас его нет) ValidationMessages.properties определите как birthDate.size = some message

РЕДАКТИРОВАТЬ 1:

Храните файлы отдельно.ValidationMessages необходимо отправлять / упаковывать вместе с вашими бобами все время, в отличие от сообщений вашего приложения.Вам не нужно определять бин для файла ValidationMessages.properties.Будет подобрано автоматически

0 голосов
/ 03 апреля 2012

Я не очень хорошо знаю javax.validation, но я предполагаю, что вы получаете сообщение в ValidationException, которое выбрасывается.

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

В Struts2 мы бы сделали что-то вродеэто:

  @Size(min = 10, max = 10, message = "size.exact.10")
  protected String birthDate;

  //in the JSP display the message:
  <s:text name="%{exception.message}"/>

Я думаю, вы могли бы сделать что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...