Novo IE 9 bugou os Aplicativos MyFaces com Richfaces 3.3

Todos aqueles como eu que mantém aplicações JSF usando MyFaces com Richfaces tiveram a infelicidade de constatar um bug quando a soluções web passou a ser executado no novo navegador IE9. A aplicação passou a gerar a exception java.lang.IllegalArgumentException: ContentTypeList does not contain a supported content type: text/css fazendo com que alguns CSS aplicados nas páginas deixasse de funcionar.
Após um tempo de pesquisa e estudo encontrei o bug catalogado no site da Myfaces. O problema na verdade começou a acontecer por que a nova versão do IE9 passou a enviar um header HTTP relacionada aos arquivos CSS inválido segundo a especificação do JSF/HTML. O bug foi registrado como inválido significando que o pessoal do MyFaces entendeu que o problema na verdade esta na questão do IE9 furar os padrões gerais. Após a troca de muitos e-mails com o responsável pelo projeto MyFaces, acabei chegando a varias soluções diferentes para contornar a situação. Segue cada um delas para que os felizardos possam selecionar o mais adequado para seu projeto:

  1. Gerar um implementação customizada do MyFaces JSF 1.2 usando Mavem. Na classe org.apache.myfaces.shared.renderkit.html.HtmlRendererUtils existe a chamada do método public static String selectContentType(String contentTypeListString) que deve ser alterado passando a constante SUPPORTED_CONTENT_TYPES fazendo MyFaces aceitar o novo parâmetro do IE9. Eu na verdade gostaria de usar o post para discordar dessa situação. Eu acho que a Apache teria a responsabilidade de gerar esse build corrigindo essa situação, mesmo por motivos extras.
  2. Gerar um implementação customizada do RichFaces. Na classe org.ajax4jsf.resource.TemplateCSSRenderer existe a chamada do método renderKit.createResponseWriter(countingOutputWriter,null,”UTF-8″); que deve ser alterado para renderKit.createResponseWriter(countingOutputWriter,”*/*”,”UTF-8″); fazendo RichFaces aceitar o novo parâmetro do IE9. Eu já tinha entrado com contato com o pessoal do RichFaces e eles já disseram nesse momento não tinham planos de mexer na versão do 3.3, uma vez que todos os esforços estão sendo concentrados na versão 4.0.
  3. Para aqueles que não estão usando extensões proprietárias do MyFaces 1.2, é possível trocar o provedor de JSF compatível. Foi o caso de uma das empresas no qual eu sou consultor que trocamos o MyFaces pelo equivalente do Mojarra JSF 1.2. A solução voltou a funcionar automaticamente, sendo um dos grandes benefícios de usar frameworks baseados em especificações.
  4. Para aqueles que estão usando o novo MyFaces JSF 2, a solução é criar um kit customizado de ResponseWriter que é uma nova features do JSF 2. Eu não procurei detalhes dessa opção uma vez que todos os meus projetos estão na versão 1.2.

Para aqueles interessados na oções 2, eu montei e gerei uma versão customizado do Richfaces 3.3 final corrigindo esse problema. Os interessados pode pedir o arquivo via e-mail: fernandofranzini[arroba]gmail.com. Espero que as dicas possam ajudar a todos. Bom final de semana 😀 .

“Mas, lembrem-se do SENHOR, o seu Deus, pois é ele que lhes dá a capacidade de produzir riqueza, confirmando a aliança que jurou aos seus antepassados, conforme hoje se vê.” Deuteronômio 8:18

Anúncios

7 pensamentos sobre “Novo IE 9 bugou os Aplicativos MyFaces com Richfaces 3.3

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s