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?
L
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.
L
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?
L
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.