Настроить сообщение проверки бина? - PullRequest
3 голосов
/ 09 октября 2011

Два глупых вопроса о проверке бина, используемых в 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 в classpath.Теперь, как я могу сделать этот файл свойств загруженным на каждой странице?

Ответы [ 2 ]

4 голосов
/ 09 октября 2011

Относительно 1: Формат сообщения об ошибке зависит от свойства javax.faces.validator.BeanValidator.MESSAGE, которое должно быть указано в комплекте ресурсов приложения, например:

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

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

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

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

2 голосов
/ 09 октября 2011
  1. Использовать атрибут label элемента ввода.

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

    См. Также Учебное пособие по JSF 2.0 - Проверка правильности настройки .

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

...