Boa tarde galera, estou com um problema, estou enviando informações através de um Input:
<form name="enviaFiltro" action="http://localhost:8080/treinamento/AlunoServlet?acao=listar" method="post">
<input id="filtro" name="filtro" class="text" type="text" value=""/>
<a class="linkMenuPrincipal" href="#" onclick="enviaFiltro.submit()">Listar Alunos</a>
</form>
até aí tudo bem, o negócio é receber esses dados no Servlet, como faço pra receber de forma correta os caracters com acento?
Ex.:
String filtro = request.getParameter("filtro");
System.out.println("filtro "+filtro);
ao enviar “á” recebo: á
desde já agradeço a colaboração.
1 curtida
Você precisa definir o encoding do request
ou dependendo do encoding
1 curtida
[quote=sergio7888]Você precisa definir o encoding do request
ou dependendo do encoding
[/quote]
obrigado pela ajuda.
cloquei assim (o encode definido no JSP é o UTF-8):
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
session.setAttribute("mapAlunos", mapAlunos);
mas continuou da mesma forma, fiz algo errado?
essa implementação está no meu método lista do meu servlet:
[code] private void listar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
@SuppressWarnings(“unchecked”)
Map<String, AlunoTO> mapAlunos = (Map<String, AlunoTO>) request.getSession().getServletContext().getAttribute(“alunos”);
HttpSession session = request.getSession();
session.setAttribute("mapAlunos", mapAlunos);
request.setCharacterEncoding("UTF-8");
String filtro = request.getParameter("filtro");
System.out.println("filtro "+filtro);
String pagina = "/treinamento/aluno/alunoListar.jsp";
session.setAttribute("pagina", pagina);
request.setAttribute("targetPage", TreinamentoConstantes.FORM_LISTAGEM);
request.getRequestDispatcher("/treinamento/geral/mainLayoutBody.jsp").forward(request, response);
}[/code]
Verifique se a pagina que esta enviando esta em UTF-8, se estiver tente colocar ‘accept-charset=“UTF-8”’ na sua tag form pois o navegador pode estar enviando em um charset diferente.
dentro da minha tag head esta assim:
daí alterei o form onde está meu input para:
<form name="enviaFiltro" action="http://localhost:8080/treinamento/AlunoServlet?acao=listar" method="post" accept-charset="UTF-8">
<input id="filtro" name="filtro" class="text" type="text" value=""/>
<a class="linkMenuPrincipal" href="#" onclick="enviaFiltro.submit()">Listar Alunos</a>
</form>
mas o resultado continuou o mesmo
Após teste vejo que o problema não esta no encode do request
se você colocar no seu servlet
ServletOutputStream out = response.getOutputStream();
out.println("filtro " + filtro);
out.println("á");
System.out.println("filtro " + filtro);
System.out.println("á");
verá que o problema esta na forma que o System.out escreve os acentos.
Se necesssario remova o request.setCharacterEncoding
primeiramente agradeço pela ajuda.
Testei algumas sugestões, mas a q funcionou foi a de simplesmente alterar o charset de utf-8 para iso-8859-1 na minha JSP.
abraço.
1 curtida