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

Encoding não está funcionando

Configurei o Encoding UTF-8 no ServletSpringMVC, e não está funcionando. Já verifiquei o Banco de dados e ele está configurado a tabela para "UTF-8_Default Collation", e minhas paginas JSP também estão configuradas para UTF-8.

Segue abaixo meu código:

package br.com.notus.conf;


import javax.servlet.Filter;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ServletSpringMVC extends AbstractAnnotationConfigDispatcherServletInitializer{

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] {AppWebConfiguration.class, JPAConfiguration.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }

    protected Filter[] getServletFilter() {
        CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
        encodingFilter.setEncoding("UTF-8");

        return new Filter[] {encodingFilter};
    }

}

JSP.....

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cadastro de Produtos</title>
</head>
<body>

    <h1>Lista de Produtos</h1>

    <table>
        <tr>
            <td>Nome</td>
            <td>Descrição</td>
        </tr>
        <c:forEach items="${produtos}" var="produto">
            <tr>
                <td>${produto.nome}</td>
                <td>${produto.descricao}</td>
<%--                 <td>${produto.imposto}</td> --%>
            </tr>
        </c:forEach>
    </table>

</body>
</html>

Conseguem me ajudar?

Valeu.

7 respostas

Fala aí Luiz, qual é o problema que você está tendo?

Mateus,

Eu configurei o Encoding para utilizar o UTF-8 no meu ServletSpringMVC, conforme a classe que postei acima, porém, ao exibir na minha página, continua aparecendo os caracteres "estranhos" devido a codificação da página.

Ex: Produto um Teste de inserção de produto um Produto 2 Teste de descrição do campo ã

Tenta inserir um novo produto, continua com o problema? Os que forma inseridos com o encode errado já era. Também verifica se o form de cadastro esta com UTF-8 (não apenas o de listagem)

Thiago, sim já fiz isso, esses dois que postei são os 2 novos produtos inseridos no banco de dados, antes disso fiz um Truncate na tabela e certifiquei que ela esteja também em UTF-8..... ou seja, o erro do encoding persiste.

Tem algum outro lugar que devo configurar no Spring?

solução!
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        return new Filter[] {characterEncodingFilter};
    }

Tenta isso, acredito que seja o nome do método, pois o método chama getServletFilters() e o seu esta getServletFilter(). o spring não deve estar entendendo

Exatamente Thiago, não me atentei que faltou um "s"...... kkk obrigado!

Aeee! que bom que deu certo! Também estou fazendo esse curso, então estava com o projeto aqui aberto ainda, fui comparar ao meu =)