RESOLVIDO - f:ajax no internet explorer

7 respostas
C

Ola amigos, gostaria de saber se alguém já passou por isso: estou usando f:ajax (xmlns:f="http://java.sun.com/jsf/core") e funciona normalmente no firefox e no chrome mas no internet explorer (testei na versão 8 ) não funciona. Como o código era grande, fiz um novo só para passar a ideia do que quero fazer e não ficar muito complicado. A ideia é essa:

<h:panelGrid id="pncategoria" columns="2">
	<h:outputLabel value="Tipo:" />   	      	   	      					
	<h:selectOneRadio layout="lineDirection" requiredMessage="Informe se você é pessoa fisica ou juridica" required="true" immediate="true" id="tipopessoa"  value="#{pessoaBean.tipoPessoa}" >   
		<f:selectItem itemLabel="Fisica" itemValue="1"  />     					 	    				  
	        <f:selectItem itemLabel="Juridica" itemValue="2"  />
	        <f:ajax immediate="true"  render="formulario:pngeral"  />			   				   				  				    			   								 							
	</h:selectOneRadio> 	  		  	
</h:panelGrid>		
					 
<h:panelGroup id="pngeral"> 	         
	<h:panelGroup id="pnfisica"> 	             
		<h:panelGrid columns="2" rendered="#{(pessoaBean.tipoPessoa == 1)}">   	      														    
			<h:outputLabel value="CPF:" />
			<h:inputText requiredMessage="O cpf deve ser informado." required="true" value="#{pessoaBean.pessoa.cpf}"  rendered="#{(pessoaBean.tipoPessoa == 1)}" />			             												             				             																		             
		</h:panelGrid>	  
	</h:panelGroup>
					
	<h:panelGroup id="pnjuridica"> 	             
		<h:panelGrid columns="2" rendered="#{(pessoaBean.tipoInscricao == 2)}">   	      														    
			<h:outputLabel value="CNPJ:" /> 
			<h:inputText requiredMessage="O CNPJ deve ser informado." required="true" value="#{pessoaBean.pessoa.cnpj}" rendered="#{(pessoaBean.tipoInscricao == 2)}" />			             												             				             																		             
		</h:panelGrid>	  
	</h:panelGroup>
</h:panelGroup>

Basicamente, tem a escolha em um radio se a pessoa é fisica ou juridica, habilitando um painel com cpf se for tipo = 1 (fisica) ou o painel com cnpj, se o tipo for =2 (CNPJ. Como falei, criei este exemplo para ficar mais simples de explicar o problema. No firefox e no Chrome ele habilita e desabilita normalmente, no Internet explorer é como se nem existisse....

7 Respostas

L

Qual o erro que apresenta no ie ?

Qual versão do ie ?

C

O problema é esse…nada de erro, somente não funciona no IE… eu fico clicando no radio e é como se não tivesse código associado (como se não não tivese renderizando)…já no firefox e no chrome funciona perfeitamente. O problema foi detectado na versão 8 do IE…

C

descobri o erro e para quem um dia passar pelo mesmo problema aí está a solução: problema está em utilizar encoding ISO-8859-1, usando UTF-8 tudo funciona normal.

cuidado com a utilização do encoding ISO-8859-1 como abaixo (trabalhando com ajax):

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

Como falei, funciona perfeitamente no Chrome e no Firefox mas no Internet Explorer não…

G

Olá.
Tive um problema muito parecido.

Estava com um ajax chamando outra página por POST e recebendo dados JSON, e charset Windows-1252, funcionando normalmente. No entanto, ao incluir uma chamada que retornava acentos, o charset utf-8 do json retirava os acentos…
No Firefox e Chrome, tudo permaneceu funcionando, no entanto, no IE alguns BUGs apareceram.

O principal BUG é que o ajax só funcionava uma vez , e nos próximos cliques nada acontecia, como se função não estivesse mais lá.

Neste caso, nao pesquisei mais, e apenas impedi o retorno com acentos do JSON.

Mas você tem alguma idéia de ler os textos com acentos e nao utilizar o charset utf-8?

C

rapaz…

a verdade é que não foi “Resolvido totalmente”…

descobri que o f:ajax funciona no Internet explorer com UTF-8…mas ferra a acentuação

com ISO-8859-1 a acentuação fica boa mas o f:ajax não funciona no IE

A grande pergunta é:

Alguém consegue usar ISO-8859-1 e fazer f:ajax funcionar no IE?

G

Tive o problema relatado acima, com o IE. A função tinha sido criada e funcionava apenas uma única vez.
Resolvi o problema alterando a forma como o IE faz a atualização das páginas. Lá no IE, vá até opções de internet (internet opitions), e depois em configuraçoes (settings) do histórico da internet (Browsing History) e definina a primeira escolha , ou seja, sempre que eu visitar a webpage (Every time I visit the webpage).

Não tenho certeza, mas aparentemente o IE utiliza um cache interno e quanto a configuração em em automático, ele não atualiza a página com o ajax.

Estou tendo alguns problemas também com a formataçao o encoding windows-1252, pois os acentos são excluidos nas chamadas do ajax, que usa encoding UTF-8.
Alguem conseguiu resolver isto?

C

Olá, a solução que você deu resolve para seu acesso mas pense num sistema de inscrições ou que seja aberto a várias pessoas, como garantir que elas farão a mudança nas opções no IE?

estava perdendo um tempo com isso e fazendo vários tipos de teste. Enfim, cheguei numa solução que funcionou: fez o Internet explorer funcionar com o f:ajax e a acentuação ficou normal, aceitando caracteres de nosso idioma, como o ç, o ~, etc…

em resumo, este código não funciona (lembrando que no chrome e firefox funciona normalmente):

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

Já este funciona:

<?xml version="1.0" encoding="ISO-8859-15" ?>

Ou seja, se tiver com ISO-8859-1 o f:ajax não funciona, com UTF-8 tive problemas com acentuação, e com o ISO-8859-15 funcionou normal (tanto o f:ajax no IE, quanto a acentuação fica normal). Mudei isto apenas no arquivo .XHTML que tinha o f:ajax, nos demais continuei usando ISO-8859-1.

Acho que ficou resolvido :slight_smile:

Criado 14 de junho de 2012
Ultima resposta 10 de mai. de 2013
Respostas 7
Participantes 3