#jsf #bean-validation
#jsf #проверка компонента
Вопрос:
Два глупых вопроса о проверке компонента, используемого в JSF:
-
Как я могу удалить префикс
form1:userName:
из выходного сообщения?<h:message for="userName" />
Который получает:
form1:userName: Please enter a valid username (5-20 characters)
Я также хотел бы перевести имя
form1:userName
наUser Name
, такой перевод легко реализовать, но я не могу найти, где создать сообщение. -
Скажем, у меня есть пользовательский валидатор,
@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:
-
Используйте атрибут входного элемента
label
.<h:inputText label="User name" ... />
Смотрите также руководство по JSF 2.0 — Проверка точной настройки.
-
ValidationMessages.properties
Файл должен быть помещен в корневой каталог classpath без какого-либо пакета. Смотрите также спецификацию JSR-303.