Por mais que esse seja um assunto já bastante explorado em outros blogs e na documentação de vários componentes, o que vou mostrar aqui auxilia na utilização do Hibernate Validations para validação da entrada de dados em aplicações JSF usando RichFaces.
Se você também usa o RichFaces com Hibernate Validations deve estar recebendo as mensagens em inglês ao invés de português. Bom depois de muita pesquisa vendo “MessagesInterpolator”, depurando, código e etc eu tentei definir a internacionalização tanto pelo JBoss Seam quanto pelo JSF (faces-config.xml) e para minha surpreza as mensagens passaram a ser exibidas em português.
A solução começa por configurar a inicialização do JBOSS definindo “Português-Brasil” como o idioma e local padrão. Isso é feito adicionando após a linha 77 no arquivo “JBOSS_HOME\bin\run.bat” a linha mostrada abaixo (linha destacada):
set JAVA_OPTS=%JAVA_OPTS% -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 set JAVA_OPTS=%JAVA_OPTS% -Duser.language=pt -Duser.country=BR
Apenas isso já resolve o “problema” de exibir mensagens em inglês onde deveriam estar aparecendo em português entretanto, algumas vezes temos que dar suporte a outros idiomas como inglês e espanhol e apenas com esse ajuste de configuração a aplicação vai continuar mostrando as mensagens em português quando deveria estar mostrando em inglês ou espanhol.
Para evitar esse problema e recuperar o idioma que deve ser usado de acordo com o navegador utilizado pelo cliente, temos agora que ajustar a configuração do arquivo “components.xml” do conforme mostrado abaixo:
<components xmlns="http://jboss.com/products/seam/components" xmlns:core="http://jboss.com/products/seam/core" xmlns:drools="http://jboss.com/products/seam/drools" xmlns:mail="http://jboss.com/products/seam/mail" xmlns:persistence="http://jboss.com/products/seam/persistence" xmlns:security="http://jboss.com/products/seam/security" xmlns:web="http://jboss.com/products/seam/web" xmlns:i18n="http://jboss.com/products/seam/international" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.2.xsd http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.2.xsd http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.2.xsd http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.2.xsd http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.2.xsd http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.2.xsd http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.2.xsd http://jboss.com/products/seam/i18n http://jboss.com/products/seam/international-2.0.xsd http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd"> <!-- As linhas abaixo devem ser adicionadas no seu components.xml --> <web:character-encoding-filter encoding="UTF-8" override-client="true" url-pattern="*.seam" /> <i18n:locale-config default-locale="br" supported-locales="br en es"/> </components>
Agora que o SEAM já está preparado para tratar a localização do usuário temos que adicionar o suporte a essas linguagens no arquivo “faces-config.xml” da aplicação como abaixo:
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <!-- A tag abaixo deve ser alterada. --> <application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> <locale-config> <default-locale>br</default-locale> <supported-locale>br</supported-locale> <supported-locale>en</supported-locale> <supported-locale>es</supported-locale> </locale-config> </application> </faces-config>
Concluídas essas configurações a aplicação se comportará como esperado em relação a internacionalização e, principalmente, as mensagens do Hibernate Validations serão apresentadas no idioma esperado.
Por último, mas não menos importante, essas são as versões do que usei para elaborar esta publicação:
- RichFaces 3.3.3
- JBOSS SEAM 2.2.1
- JBOSS Application Server 4.2.3 GA e 5.1.0 GA
Qualquer dúvida, por favor, deixe um comentário.