Corrigindo o problema de Ajax no IE9 com JSF e Richfaces 3
Assim que saiu o Internet Explorer 9 começamos a ter inúmeros problemas com o RichFaces 3, especialmente com as requisições em Ajax. O problema está no javascript de terceiros usado pelo componente de interfaces ricas. Algumas pessoas mencionaram ter conseguido corrigir e divulgaram o método, entretanto outras fizeram o mesmo procedimento e não deu certo (como eu).
Segundo os desenvolvedores do RichFaces, eles estão muito atarefados com a versão 4.0 da biblioteca. Há previsão de sair uma versão 3.3.4 com as correções, mas sem prazo divulgado.
Dessa forma, a única solução que encontrei foi adicionar um filtro no web.xml para forçar o IE9 a trabalhar como a versão 8. O procedimento é muito simples e leva poucos minutos. Vamos a ele:
- Crie uma classe Filter que adicione um header ao response forçando o IE9 a trabalhar como a versão 8. O arquivo .java pode ser o seguinte:
package br.com.projeto.filter;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
public class FiltroCorrecaoIE9 implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
((HttpServletResponse) response).setHeader("X-UA-Compatible", "IE=EmulateIE8");
chain.doFilter(request, response);
}
public void destroy() {
}
}
- Adicione o filter ao web.xml. Exemplo de código abaixo:
<filter>
<filter-name>filtroIE9</filter-name>
<filter-class>br.com.projeto.filter.FiltroCorrecaoIE9</filter-class>
</filter>
<filter-mapping>
<filter-name>filtroIE9</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
- Rode a aplicação e teste as requisições Ajax no IE9 e em outros navegadores para ver se não quebrou nada.
Categoriasprogramação, programação JSF
ajax, filter, jsf, richfaces