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

Encoding no Heroku

Olá pessoal. Após subir a aplicação para o Heroku, temos problemas de encoding ao cadastrar produtos. A aplicação funciona normalmente no localhost, mas no Heroku parece que o encoding não fica como UTF-8. No vídeo da aula, acontece o mesmo para o instrutor, mas ele não fala como resolver.O filtro de encoding está configurado, conforme abaixo.

public class ServletSpringMVC extends AbstractAnnotationConfigDispatcherServletInitializer {
    ...
    @Override
    protected Filter[] getServletFilters() {

        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceEncoding(true);
        return new Filter[] { characterEncodingFilter }; 

    }
    ...
}

Tentei inclusive colocar no Procfile, mas não funcionou

web: java $JAVA_OPTS -jar -Dspring.profiles.active=prod target/dependency/webapp-runner.jar --port $PORT --uri-encoding UTF-8 target/*.war

Alguém tem alguma ideia?

3 respostas

Oi Rodrigo, será que não pode ser problema na criação das tabelas? Eu tive problemas bem parecidos outro dia com mysql, a collation e charset estavam errados.

Oi Yuri, obrigado pela resposta. Então, o problema não está no banco de dados, pois nessa mesma aplicação tem um serviço REST que permite incluir um produto. Se a inclusão é feita por esse serviço, não acontece problema de encoding. O problema só ocorre se o cadastro é feito pela página JSP. O charset da página está setado para UTF-8.

solução!

Boa noite. Consegui corrigir. O problema começou a acontecer depois que adicionei o Spring Security à aplicação. Consultando na internet vi que era necessário adicionar o seguinte filtro para o spring security (o mesmo que eu já tinha adicionado para o servlet).

@Override
        protected void configure(HttpSecurity http) throws Exception {

            CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
            encodingFilter.setEncoding("UTF-8");
            encodingFilter.setForceEncoding(true);

            http.addFilterBefore(encodingFilter, CsrfFilter.class);

            // resto do código aqui

        }