[Resolvido] - JSF Problemas com acentuação

Pra mim funcionou com a definição da valor para o atributo acceptcharset do form. Assim:

<h:form id="form" acceptcharset="ISO-8859-1">
3 curtidas

Valeu por compartilhar Evandro Canal, me ajudou aqui também. :smiley:

Obrigado

[quote=llucas]Consegui resolver depois de muito tempo o problema que eu nem sei de onde veio ja que tudo funcionava normal e deu pane do nada -.-’
Além do encoding declarado no xml como ISO-8859-1 coloquei a tag f:view com contentType=“text/html; charset=ISO-8859-1”
Enfim o código no final ficou assim[code]<?xml version='1.0' encoding='ISO-8859-1' ?>

<f:view contentType="text/html; charset=ISO-8859-1">
    <h:head>
        <title>Facelet Title</title>
    </h:head>

    <h:body>
        <h:form>
            <h:outputText value="João" />
            <h:inputText />
        </h:form>
    </h:body>
</f:view>
[/code][/quote]

Bah llucas. Matou a pau. To há uns quatro dias tentando resolver este problema. Muito obrigado cara.

Estou com o mesmo problema de acentuação com JSF, porém, as soluções dadas não resolveram o meu problema. Estou utilizando o primefaces.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:p="http://primefaces.prime.com.tr/ui">
<head> 
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    		<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

/* Restante do código */

novato25. Coloque a parte do Prime pra gente dar uma olhada. Tu tem no teu código a tag <f:view contentType=“text/html; charset=ISO-8859-1”>?

[code]<?xml version="1.0" encoding="UTF-8"?>

<f:view contentType=“text/html; charset=ISO-8859-1”>
<h:head>
<f:facet name=“first”>


</f:facet> [/code]

Troca <?xml version="1.0" encoding="UTF-8"?> por <?xml version='1.0' encoding='ISO-8859-1' ?>

se não resolver avisa aí. Abraço.

olá regisnv,

obrigado pela ajuda… não resolveu… parece que nada resolve… já estou há dois dias com este problema e nada.

Um detalhe… funciona no Firefox, mas no IE e no Chrome não. :?

Ah desculpa… vi só agora teu novo post. Estranho não funcionar em todos os proxys. Eu tiraria aquele <f:facet>, não? O que tu acha? Abraço.

Na verdade tiraria toda essa parte:

<f:facet name="first"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> <meta http-equiv="X-UA-Compatible" content="IE=Edge"/> </f:facet>

olá regisnv,

vi uma coisa estranha aqui na página. Como ela é composta, na metade dela encontrei outra tag html… sistema legado é complicado. Vou ver se é isto que causa o problema e ver se soluciono ele. Valeu… :slight_smile:

olá regisnv,

resolvi o problema. Era o ajax. Coloquei o commandButton com o atributo ajax=false e funcionou… valeu!

Nossa, vivendo e aprendendo. Nunca imaginaria isso. Que bom que tu conseguiu cara. Abraço.

É… eu também não… mas por incrível que possa parecer, resolveu… já tinha tentado N maneiras de configuração de codificação e nada. Valeu!!

Pessoal, estou com o mesmo problema e todas as soluções não funcionaram. Estou usando Facelets

<?xml version='1.0' encoding='ISO-8859-1' ?>

<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:ui=“http://xmlns.jcp.org/jsf/facelets
template="./Template.xhtml"
xmlns:h=“http://xmlns.jcp.org/jsf/html
xmlns:p=“http://primefaces.org/ui
xmlns:f=“http://xmlns.jcp.org/jsf/core”>

<ui:define name="content">  

]
Estou usando primefaces
o estranho que na barra de menu tem acento e está normal.
Obrigado desde já

Vlw Evandro, só a inclusão na tag FORM já resolveu o meu problema.
Muito obrigado.

Se vc usar o padrao de openSessionInView faça isso

[code]public class FilterOpenSessionInView extends DelegatingFilterProxy implements Serializable {

private static final long serialVersionUID = 1L;
private static SessionFactory sf;

@Override
public void initFilterBean() throws ServletException {
    sf = HibernateUtil.getSessionFactory();
}

@Override
public void doFilter(ServletRequest servletRequest,
        ServletResponse servletResponse, FilterChain chain)
        throws IOException, ServletException {
    try {

        servletRequest.setCharacterEncoding("ISO-8859-1"); //codificacao

        sf.getCurrentSession().beginTransaction();
        chain.doFilter(servletRequest, servletResponse);
        sf.getCurrentSession().getTransaction().commit();

        servletResponse.setCharacterEncoding("ISO-8859-1");   //codificacao
        servletResponse.setContentType("text/html; charset=ISO-8859-1");  //codificacao

    } catch (Exception e) {

        e.printStackTrace();

        if (sf.getCurrentSession().getTransaction().isActive()) {
            sf.getCurrentSession().getTransaction().rollback();
        }

    } finally {
        if (sf.getCurrentSession().isOpen()) {
            if (sf.getCurrentSession().beginTransaction().isActive()) {
                sf.getCurrentSession().clear();
            }
            sf.getCurrentSession().close();
        }
    }
}

}[/code]

1 curtida

Cara, pega o primeiro artefato de código que recebe a sua request (seja um filtro, um listiner, um servlet, não importa, desde que seja o primeiro a receber a request) e seta an request e na response o charset. Vai funcionar independente de navegador, servidor, S.O.

//tirar os caracteres estranhos das requisições e respostas
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);

obs: veja se o banco está setado em UTF-8.