8
respostas

Problema na acentuaçao (encoding) - implicação com a versão do weld 2.1.1

Boa noite.

Para acompanhar o treinamento fiz o download do projeto inicial (apresentado no início do curso) e segui as implementações a partir dele. Me deparei com o clássico problema de acentuação. Apliquei todas as dicas pra resolver o problema (configuração no web.xml, pom.xml, formato dos arquivos do código fonte, cabeçalho dos jsps), configurei tudo para UTF-8, mas mesmo assim o problema persistiu. Até que pesquisando outro assunto (a atualização das versões das dependências) percebi que com a versão 2.1.2 do weld a acentuação é exibida corretamente (a versão que consta no pom.xml do projeto desse curso é a 2.1.1).

Fim das contas: resolvi o problema da acentuação por acaso. Mas gostaria de saber se esse problema já foi diagnosticado e se seria possível compartilhar o que ocorre.

Pra confirmar que a correção dependeu somente da mudança da versão do weld fiz somente essa alteração a partir do arquivo pom.xml original e o comportamento foi o mesmo - erro na 2.1.1 e funcionamento esperado na 2.1.2 (vale tanto fazendo a alteração no weld-servlet - o que consta no pom.xml original, quanto no weld-servlet-core/impl - haja vista que hoje na documentação do vraptor consta a instrução para usar estas últimas em detrimento daquela).

Obs: Meu ambiente de desenvolvimento é o seguinte: SO: Ubunyu 15.10; Java 1.8.0_91 Tomcat 7.0.70 (o mesmo usado no curso) Eclipse Mars 4.5.2

Desde já agradeço.

8 respostas

Realmente muito estranho Rodrigo, até porque voce está em linux e o default do sistema operacional é gravar tudo em UTF-8.

Difícil dizer assim o que pode ter sido, mas provavelmente o weld 2.1.1 estava puxando latin1/iso8859-1 como default em algum lugar, o que é bastante estranho.

Sei que já resolveu o problema mas, mesmo a versão 2.1.2 já é de 2013, recomendaria tentar mudar para uma mais nova, mas aí precisamos ver como o vraptor aceita.

Aproveito para fazer uma propaganda sobre mim mesmo, escrevi um post generico sobre encoding aqui:

http://blog.caelum.com.br/entendendo-unicode-e-os-character-encodings/

Foi bem rápido na resposta Paulo, obrigado! Quanto a versão do weld, estou escrevendo escrevendo um outro post sobre o assunto (não quis misturar muita coisa num lugar só). Mas já que você citou, tentei iniciar o mesmo projeto com o weld 2.2.16 e o tomcat não subiu. Mas além disso, no site do VRaptor, na página que fala sobre as dependências, consta que a versão do weld que deve-se incluir no projeto é a 2.1.2. Essa inclusive é uma de minhas dúvidas, pois o weld já está na versão 2.3.*

Paulo, quanto ao seu artigo sobre encoding, já tenho ele nos favoritos há um bom tempo, realmente é muito bacana. Já quebrei a cabeça com isso. Achei que depois daquela pesquisa não teria mais problemas com encoding, até que me deparei com esse.

Oi Rodrigo

O Weld 2.2.x implementa o CDI 1.2, e o stable do VRaptor está no CDI 1.1. Por isso a documentação aponta pro 2.1.x.

Por curiosidade eu testei o projeto do curso (que usa o 2.1) e não tive nenhum problema de encoding. Quer dar uma olhada nas configurações dele e se o problema acontece no seu environment?

https://github.com/alura-cursos/desenvolvimento-web-com-vraptor-4

Oi Turini, obrigado pela resposta.

Sem saber (creio) tu contribuiu num outro tópico que também abri ontem - a respeito das dependências do VRaptor (https://cursos.alura.com.br/forum/topico-dependencias-do-vraptor-22509).

Com relação ao problema dos caracteres, observe que relacionei as versões 2.1.1 (que apresentou caracteres acentuados errados) e 2.1.2 (que funcionou). Você falou em 2.1 e 2.2.

Fiz testes com o pom.xml original (somente com a versão do weld alterada para 2.1.2).

Obs: Acabei de testar numa máquina com Windows 10 e Tomcat 7.0.65 e constatei que o comportamento é o mesmo que no Ubuntu.

Turini, mais dois centavos sobre o assunto...

Antes de postar uma mensagem no fórum procuro resolver a dúvida na documentação. Revendo meus paços lembrei que uma das coisas que me levou a testar uma versão do weld superior à família 2.1 foi o fato de a página de dependências do Vraptor constar o seguinte:

“Ao usar um Servlet Container como o Tomcat ou Jetty, é preciso adicionar os jars do Weld 2.x...”

Considerando o que você falou sobre a versão estável do VRaptor, que usa o CDI 1.1 (weld 2.1), será que a informação não da margem ao erro? Comigo ocorreu isso.

Talvez para desenvolvedores Java experientes essa informação seja evidente (Weld 2.2 trabalha com CDI 1.2, logo, incompatível com VRaptor). Mas creio que nem todos os interessados no framework tenham tanta experiência.

Oi Rodrigo

Sobre o Weld, é bastante estranho estar causando esse problema de encoding, mas é possível. Tudo indica, pelos seus testes, mas é curioso que com a versão original do curso (2.1.1) o problema acontece com você, e não comigo.

https://github.com/alura-cursos/desenvolvimento-web-com-vraptor-4/blob/master/pom.xml#L55

Sobre o VRaptor, sem dúvida alguma deixar essa informação explicita pode ajudar! Você abre uma issue lá no nosso repositório? É só colocar o titulo e uma descrição simples aqui:

https://github.com/caelum/vraptor4/issues/new

Se quiser se aventurar e enviar um pull request com a mudança na documentação, eu posso te guiar nesse processo. Será muito bem-vindo (;

Oi pessoal,

Sei que o assunto já está resolvido, porém gostaria de deixar meu registro aqui.

Estava passando pelo mesmo problema inclusive testei praticamente tudo comentado nesta thread https://groups.google.com/forum/#!topic/caelum-vraptor/VBbjxo-Jqmw. No entanto sem sucesso, até o filtro que o Turini sugeriu.

Resolvi realizando a troca da versão do weld para 2.1.2 como o Rodrigo Lourenço comentou.

Somente para registro da situação.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software