Olá pessoal, eu estou tendo problemas na minha tela de cadastro qto a inserção de caracteres especiais (acentos etc). Na minha aplicação estou usando VRaptor, Eclipselink, Postgresql e IDE Netbeans
Estou penando para resolver os problemas já q o banco (inclusive eu testei inserir um cliente diretamente nele com acentos e funcionou perfeitamente), netbeans, html, css e até o chrome estão com o Enconding setado para o valor UTF-8. Debugando a aplicação descobri q o problema ocorre qdo o objeto cliente chega na minha classe de controle (i.e. a classe com anotação @Resource). O objeto ja chega com as suas propriedades q foram preenchidas com caracteres especiais “manguedas”, com @s, acentos fora do lugar e por aí vai.
Devido ao debug q realizei, desconfio q seja alguma configuração q eu tenha q fazer em relação ao próprio VRaptor, já q o framework pega os dados da tela e já joga bonitinho no meu objeto (show d bola isso inclusive).
Qdo vc diz filtro vc se refere a classes que implementam a interface Filter? eu fiz uma solução paliativa (tá mais pra POG do q qq outra coisa, rs)
com ifs(q verificam a nulalidade dos campos) e new String(string.getBytes(), “UTF-8”). Porém duvido q seja a única e mto menos a melhor solução
para o problema.
isso implementando filter, ja uso o filtro para verificar questões de autenticação, logo como todas as requisições do sistema passam ali ja resolvo os caracteres.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
...
..
//corrige o problema dos acentos
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//deixa continuar a requisição
chain.doFilter(request, response);
}
[quote=rogerioeerr]isso implementando filter, ja uso o filtro para verificar questões de autenticação, logo como todas as requisições do sistema passam ali ja resolvo os caracteres.
//corrige o problema dos acentos
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//deixa continuar a requisição
chain.doFilter(request, response);
}
[/code][/quote]
vlw!! essa solução funcionou perfeitamente e é 1 milhão de vezes mais elegante da q eu tinha feito anteriormente. Acredito q isso resolva o problema d maneira global, independendo inclusive do enconding do banco e outros.