Mas está dando algum problema de encoding. Caracteres como ‘ç’ não estão chegando corretamente. Eu já configurei pro eclipse usar UTF-8 em todos os lugares que eu achei alguma configuração de encoding. Eu fiz também a seguinte configuração no web.xm:
não sei se tem uma solução “mais bonita” para isso, mas essa foi a única que encontrei…
espero ter ajudado
Funcionou, mas tem outro problema. Se eu acessar essa rota pelo navegador direto, usando a codificação de caracteres, não funciona. Eu acho que o problema está justamente aí. O jQuery deve usar string UTF-8 mesmo, mas ele não deve codificar a URL antes de mandar a requisição. Vou dar uma pesquisada aqui, se eu achar algo eu posto a solução.
G
gutomarzagao
Eu acho que é um bug do Vraptor. Pra testar, eu tentei fazer a seguinte requisição pelo navegador:
Esta é a encoded URL pra:
Então eu criei um controller que tratasse essa requisição:
Ou seja, parece que o Vraptor está dando decode na URL, mas não está dando decode nos parâmetros da query string. Alguém pode confirmar essa informação? Em qual classe do Vraptor eu poderia confirmar isso?
Lucas_Cavalcanti
vc fez a requisição com o browser?
tenta fazer com outro cliente, tipo um CURL
G
gutomarzagao
Lucas Cavalcanti:
vc fez a requisição com o browser?
tenta fazer com outro cliente, tipo um CURL
Imprime a mesma coisa no console.
Quando eu não codifico a url, funciona com CURL. Mas o problema está sendo justamente a URL codificada. No browser nunca funciona, porque ele sempre codifica a URL.
Lucas_Cavalcanti
O engraçado é que vc tá com o parâmetro de encoding setado né?
faz um teste, por favor:
cria uma servlet que responde por “/*”
remova o filtro do vraptor, ou faça isso em um projeto novo
no método service, imprima o request.getParameter(“query”); e o request.getRequestURI()
que é o que o vraptor faz, e veja se faz alguma diferença.
Ué, eu removi o filtro do Vraptor do web.xml, mas continua caindo no filtro. Já dei clean no projeto e no servidor, mas não adiantou… Porque isso acontece?
Mas mesmo assim eu fiz o que vc falou. Quando eu acessei pelo navegador o console ficou assim:
çãü
/vraptor-blank-project/%C3%A7%C3%A3%C3%BC
E quando eu acessei por CURL com a URL codificada ficou assim:
çãü
/vraptor-blank-project/%C3%A7%C3%A3%C3%BC
E com a URL não codificada:
çãü
/vraptor-blank-project/çãü
Depois eu criei um novo Dynamic Web Project, pra garantir que o filtro do Vraptor não ia influenciar e o resultado foi o mesmo.
Sobre fazer igual ao Vraptor, preciso saber pra qual encoding devo setar. UTF-8 mesmo?
Lucas_Cavalcanti
UTF-8…
dá uma olhada se vc não precisa subir o servidor com o encoding setado…
tenta colocar isso na parte de argumentos da JVM do servidor:
-Dfile.encoding=UTF-8
no caso do eclipse, vc consegue isso clicando duas vezes no servidor e indo em “Open launch configuration”
G
gutomarzagao
Lucas Cavalcanti:
UTF-8…
dá uma olhada se vc não precisa subir o servidor com o encoding setado…
tenta colocar isso na parte de argumentos da JVM do servidor:
-Dfile.encoding=UTF-8
no caso do eclipse, vc consegue isso clicando duas vezes no servidor e indo em “Open launch configuration”
Tentei fazer como o Vraptor faz e deu a mesma coisa:
çãü
/Teste/%C3%A7%C3%A3%C3%BC
Também coloquei o argumento na JVM, dei clean no servidor e rodei, mas não fez efeito nenhum. Continua a mesma coisa.
G
gutomarzagao
Eu descobri algo interessante: se eu usar $.post os caracteres chegam direitinho. Acho que é algum bug no jQuery ou no Vraptor. Acho que o problema está no “encode/decode” da URL. No caso do post, os dados vão no corpo da requisição, aí não tem esse problema.