Локализация с помощью bean проверки в JSF

Я создал веб-сайт на основе MVC с использованием JSF 2.0 и RichFaces 4. Каждая проверка входного текста была выполнена с использованием bean аннотаций проверки. Я использую Hibernate Validator в качестве реализации bean проверки.

Как я могу отобразить локализованное сообщение?

Если я использую

@NotNull(message="<h:outputText value=\"#{msg['Mymessage']}\" />")

то он буквально отображает <h:outputText value="#{msg['Mymessage']}" /> как сообщение.

enter image description here

Как это вызвано и как я могу его решить?

Ответ 1

Вы должны и не можете помещать теги JSF в сообщение. Кроме того, собственный пакет ресурсов JSF не будет использоваться для разрешения локализованных сообщений проверки. JSR303 bean валидация - полностью отдельный API, не связанный с JSF.

Чтобы интернационализировать сообщения проверки JSR303 bean, вам нужно создать отдельный файл ValidationMessages.properties в корневой каталог пути, который может быть локализован файлами ValidationMessages_xx_XX.properties.

например.

ERVNomView=Your message here

Для этого необходимо указать синтаксис {key}.

@NotEmpty(message="{ERVNomView}")

См. также:

Ответ 2

Для тех из вас, у кого такая же проблема, как и я (решение, данное @BalusC, не работало со многими разными файлами свойств для многих языков), нужно сделать это, чтобы назвать все файлы свойств в следующем шаблоне: ValidationMessages_xx.properties

Я не знаю почему, но шаблон... xx_XX... не работал у меня.