2012-01-23 1 views
2

Это очень удобно использовать проверку боба как javax.validation.constraints.Size в моем Java кода, такие как:Включить имя поля в сообщениях об ошибках, генерируемых аннотированных валидаторов в JSF

@Size(min=1,max=30)protected String custName; 

, а не wordier эквивалент встроенной в .xhtml странице , такие как:

<f:validateLength minimum="1" maximum="30" /> 

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

javax.validation.constraints.Size.message={0} value is too long. 

Но значение не получает заменить на {0}. Результатом является то, что в то время как аннотированные валидаторы отлично работают для простых страниц, где я могу включать отдельный <p:message /> для каждого поля формы, они не работают так хорошо для более сложной (например, с вкладкой) формы, где мне нужно сгруппировать мои сообщения на вверху страницы. Есть ли какое-либо обходное решение для этого, или мой единственный разумный выбор использовать валидаторы JSF?

ответ

3

{0} представлен атрибутом label входного компонента на стороне просмотра, который по умолчанию не соответствует идентификатору клиента.

E.g.

<h:inputText value="#{bean.customer.name}" label="Customer name"> 

Вам также необходимо переопределить формат JSF по умолчанию для сообщений проверки валидатора. Вам нужно добавить следующую запись в пачку сообщений JSF, как указано в <message-bundle> из faces-config.xml:

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

В этой конкретной записи, то {1} будет метка ввода JSF компоненты и {0} будет сообщением боба валидатор.

+0

Я задаю атрибут метки - до сих пор не получает имя поля. (Я использую PrimTaces 3.0.1 inputText, а не h: inputText, но, похоже, это не имеет значения). –

+0

См. Обновленный ответ. – BalusC

+1

Звучит неплохо, и я даже нашел пару других ссылок на одно и то же решение (http://stackoverflow.com/questions/6803536/jsf-2-0-bean-validation-and-labels и https: // forum. hibernate.org/viewtopic.php?f=9&t=1009538), но для меня не было радости. –