Настроить сообщение проверки компонента?

#jsf #bean-validation

#jsf #проверка компонента

Вопрос:

Два глупых вопроса о проверке компонента, используемого в JSF:

  1. Как я могу удалить префикс form1:userName: из выходного сообщения?

     <h:message for="userName" /> 
      

    Который получает:

     form1:userName: Please enter a valid username (5-20 characters)
      

    Я также хотел бы перевести имя form1:userName на User Name , такой перевод легко реализовать, но я не могу найти, где создать сообщение.

  2. Скажем, у меня есть пользовательский валидатор, @CreditCard его сообщение по умолчанию {foo.bar.BadCreditNumber}

     @interface CreditCard {
        String message() default "{foo.bar.BadCreditNumber}";
    }
      

    И сообщение определено foo/bar/ValidationMessages.properties в пути к классу. Теперь, как я могу сделать так, чтобы этот файл свойств загружался на каждой странице?

Ответ №1:

Относительно 1: формат сообщения об ошибке зависит от свойства javax.faces.validator.BeanValidator.СООБЩЕНИЕ, которое должно быть указано в пакете ресурсов приложения, например:

 javax.faces.validator.BeanValidator.MESSAGE={1}: {0}
  

Заполнитель {0} ссылается на сообщение об ошибке, созданное средой выполнения проверки компонента, {1} ссылается на метку компонента. Поэтому, если вы не хотите, чтобы метка содержалась в сообщении, просто убедитесь, что заполнитель {1} не содержится в этом значении свойства.

Более подробную информацию можно найти в спецификации JSF 2. раздел 3.5.6.3.

Что касается 2: как говорит BalusC, просто поместите ValidationMessages.properties в корень вашего пути к классу. Дополнительную информацию также можно найти в справочном руководстве по проверке гибернации.

Ответ №2:

  1. Используйте атрибут входного элемента label .

     <h:inputText label="User name" ... />
      

    Смотрите также руководство по JSF 2.0 — Проверка точной настройки.

  2. ValidationMessages.properties Файл должен быть помещен в корневой каталог classpath без какого-либо пакета. Смотрите также спецификацию JSR-303.