Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problemas com encoding com os valores vindo da página web.

Fiz uma página de cadastro, meu JSP está configurado com o Encoding de UTF-8, adicionei ao spring o filtro de UTF-8, meu POM do mavem está para compilar o código em UTF-8. Mas mesmo assim sempre que meu objeto do JSP possuí acentos, ele vem com problemas.

Coloquei uns syso no meio do código para ver no log se realmente estava sendo carregado.

Estou utilizando Spring 4.1.6.RELEASE, com o Spring boot 1.5.10.RELEASE, WildFly 10.1.0 e compilando em Java 1.8.0_152

Filtro na configuração do Spring

    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");

        System.out.println("XPTO - FILTER ADICIONADO");

        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(filter);
        registrationBean.addUrlPatterns("/*");
        return registrationBean;
    }

Header do JSP

<%@ page language="java" contentType="text/html;charset=UTF-8"    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>

<!DOCTYPE html>
<html>
<head>
    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">

Meu Controller

@Controller
@RequestMapping(value = "/account", produces = "text/plain;charset=UTF-8")
public class AccountController {
    @RequestMapping(value = "/saveBankAccount")
    public String saveBankAccount(@ModelAttribute @Valid BankAccount bankAccount, BindingResult result, RedirectAttributes atts,
            Model model, Locale locale) {
        System.out.println("XPTO - Nome da conta: "+ account.getName());

        if (result.hasErrors()) {
            model.addAttribute("account", account);
            return "/account/list";
        }

        accountService.save(account);

        return "redirect:/account/";
    }

Saida do filtro, mostrando que foi carregado

(...)
16:19:39,712 INFO  [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter] (ServerService Thread Pool -- 551) Looking for @ControllerAdvice: Root WebApplicationContext: startup date [Fri Feb 09 16:19:25 CET 2018]; root of context hierarchy
16:19:39,751 INFO  [stdout] (ServerService Thread Pool -- 551) XPTO - FILTER ADICIONADO

16:19:39,781 INFO  [org.springframework.web.context.ContextLoader] (ServerService Thread Pool -- 551) Root WebApplicationContext: initialization completed in 14265 ms
16:19:39,787 INFO  [io.undertow.servlet] (ServerService Thread Pool -- 551) Initializing Spring FrameworkServlet 'dispatcher'
(...)

Saída do nome do meu objeto quando tento inserir "Itaú" como nome da conta

16:20:12,074 INFO  [stdout] (default task-64) XPTO - Nome da conta: Itaú
2 respostas
solução!

Boa noite André,

Essa saída contendo "Itaú" é do console do servidor de aplicação, não?

Se estiver rodando isso em um shell ou no cmd do Windows, pode ser que eles estejam com um encoding que não reconhece letras acentuadas.

Tenta imprimir na JSP, pra ver se vem acentuado. Como você fez as configurações, provavelmente sim. Mas vale confirmar.

Na verdade, acho que o problema é só o encoding do console que não é UTF-8.

Abraço.

Olá Rafael,

Havia deixado esse ponto de lado, esperando por alguma luz da turma aqui, esses caracteres estava aparecendo em todos os cantos, JSP, MySQL. Mas fui gerar agora um registro para Itaú e devo ter mexido em algo que corrigiu o problema.

De qualquer forma, muitisso obrigado pela ajuda.

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