VRaptor 3.2.0 ValidationMessages.properties e messages.properties

Pessoal, tem alguma maneira de configurar o VRaptor pra usar o mesmo properties que o Hibernate Validator, ou fazer o processo inverso? Fazer o Hibernate Validator usar o messages.properties?

Valeu!

se vc estiver com a última versão do VRaptor, vc pode fazer:

validator.validate(objeto);

para validar os objetos com o HibernateValidator, e assim ele vai usar o mesmo messages.properties que o VRaptor.

Boa tarde,

Tenho uma dúvida em relação ao messages.properties. Esse arquivo deve ficar obrigatoriamente dentro da pasta WEB-INF/classes?

Para configurar esse arquivo deve ser adicionado ao arquivo web.xml as seguintes linhas de código.

<context-param> <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> <param-value>messages</param-value> </context-param> <context-param> <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name> <param-value>pt_BR</param-value> </context-param>

Posso ter vários arquivos messages.properties? Se sim como devo fazer e qual a configuração que fica no meu web.xml?

Caso eu esteja usando o Hibernate Validator para realizar minhas validações como deve estar o meu arquivo messages.properties para gerar uma determinada mensagem por exemplo para um campo @NotNull?

Obrigado.

sim, o arquivo tem que estar em WEB-INF/classes

mas se vc está usando o eclipse basta colocar o messages.properties em alguma source folder, que ele copia automaticamente pro lugar certo.

pode ter vários sim, mas vc precisa de um jeito de selecionar qual vc vai usar, pra que seria?

se vc usa validator.validate(objeto), o vraptor já vai usar o messages.properties como bundle pro hibernate validator. vc pode por na anotação:

@NotNull(message="{uma.chave.aqui}")

ou usar a chave padrão para i18n’alizar

[]'s

Boa tarde Lucas,

Uso o Netbeans, criei o arquivo na pasta src porém não funcionou. Tive que criar o diretório classes em WEB-INF e criar o arquivo dentro do mesmo.

Como eu faria para selecionar então o messages.properties a qual vou usar? Não tenho um exemplo concreto, é só questão de aprendizado mesmo.

Caso meu messages.properties esteja por exemplo como o abaixo.

nulo = O campo deve ser preenchido.
min2 = O campo deve ter no mínimo dois caracteres.
max10 = O campo deve ter no máximo 10 caracteres.

As minhas chaves seriam nulo, min2 e max10?

Obrigado.

isso, as chaves são o que estão antes do =

no jsp vc pode usar o fmt:setBundle para trocar o properties…

no netbeans vc pode criar uma source folder ou uma resource folder e colocar o messages properties lah

Lucas, teria como você me dizer como criar uma source folder ou uma resource folder no Netbeans?

Dei uma lida sobre o fmt:setBundle e o que encontrei foi sobre o tempo de vida que as mensagens ficaram ativa.
Porém não entendi direito o funcionamento do mesmo. Tenho um arquivo messages.properties como eu poderia mudar as propriedades do mesmo usando o fmt:setBundle e poderia me dar um exemplo concreto sobre ele?

Obrigado.

Boa tarde,

Pesquisando encontrei um artigo muito bom da caelum que esclareceu muitas dúvidas e colocou outras.
Artigo: http://blog.caelum.com.br/i18n-internacionalizacao-com-jstl/

Não entendi muito bom o tópico 5, “Mude a língua do sistema a força”.

Me corrijam se eu estiver errado.
Na caso de um site que tenha bandeiras de países para trocar a linguagem. O link vai direcionar uma url, como exemplo mudaLingua.jsp?lingua=en, essa url irá chamar um método com o parâmetro en, esse método irá enviar para a página mudaLingua.jsp que executará o código acima e posteriormente redirecionará a página para a página atual no browser do usuário.

Agora, temos essa parte.

[quote]Parece um pouco estranho ter um jsp responsável pela tarefa de mudar a língua do sistema, já que os jsps deveriam ser responsáveis apenas pela apresentação (geração de html, no nosso caso). A funcionalidade parece se encaixar melhor dentro de uma classe responsável por mudar a lingua do sistema.

A classe javax.servlet.jsp.jstl.core.Config serve justamente para controlar as configurações da JSTL programaticamente. Com isso, você pode ter uma servlet, uma action do struts, uma lógica do vraptor, ou algo similar para mudar a lingua do seu sistema.

Exemplo com uma servlet:

[code]public class MudaLinguaServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String language = request.getParameter(“lingua”);
Locale locale = new Locale(language);

    Config.set(request.getSession(), Config.FMT_LOCALE, locale);
    Config.set(request.getSession(), Config.FMT_FALLBACK_LOCALE, locale);

    
    response.sendRedirect("index.jsp");

}
}[/code]

Basta agora chamar a servlet passando o parâmetro lingua. Experimente chamar mudaLingua?lingua=en e mudaLingua?lingua=de. Ou você pode ainda deixar bandeiras para diferentes países com links para essa Servlet que muda a língua.[/quote]

Pelo o que entendi a método service da classe MudaLinguaServlet irá fazer o papel da página mudaLingua.jsp e assim não precisarei chamar a mesma para mudar a língua da página, somente usarei o método.

Estou errado?

Obrigado a todos.

vc não pode mudar as propriedades, vc pode trocar de arquivo só…

por exemplo, se vc tiver o arquivo bolinha.properties, vc pode fazer:

<fmt:setBundle name="bolinha" scope="request"/>

o scope é pra qto isso vai valer, no caso até o final da requisição…

não uso o Netbeans, mas não deve ser difícil encontrar… tente no menu de criar um novo qqer coisa

acho que vc entendeu corretamente sim

Boa noite Lucas,

Tenho mais uma dúvida… Como faço para chamar o método service.

Desculpe o incômodo.

Obrigado.

dá uma olhada nessa apostila:

tem a resposta para essa dúvida e mais várias coisas sobre java para a web.

o curso é muito bom também :wink:

Realmente a apostila é muito boa. estou começando com java para web e recomendo esta apostila para começar os estudos.