Primefaces + jquery

3 respostas
javascriptjqueryprimefaces
gustavodefreitasmene

Boa tarde a todos!
Tenho uma aplicacao com primefaces 4, que tem um p:menuitem que executa um javascript.
Neste javascript há uma chamada de um metodo $.getJSON.
Para este $.getJSON funcionar tive que inserir à pagina HTML o jquery.

Mas depois que inseri o arquivo jquery os componentes do primefaces pararam de funcionar,
alguém já passou por isso e saberia me ajudar?

Segue abaixo o código:

arquivo jquery importado a pagina HTML

função javascript
function metodo(usuario) {		
	var cont = window.location.href;	 	//http://numero_ip_servidor:porta/MyApp...
	var contexto = cont.split("MyApp");	// 2 strings -> http://numero_ip_servidor:porta/ e MyApp/... 
			
	// concateno o endereco com a chamada rest = http://numero_ip:porta/WebServ/integracao/metodo"
	$.getJSON(contexto[0] + 'WebServ/integracao/desviorota', {login:usuario} ).done(function( json ) {
		alert(json); 					
		// este json corresponde a um objeto serializado retornado pelo servico Rest que contem um CAMPO chamado aplicacao com VALOR que eh a string que chama a URL 			
		$.each(json, function(campo, valor) {
			alert(campo + " - " + valor);									
			window.open(valor, '_blank');
			
		});					
	});							
}

componente do primefaces que chama o javascript acima
<p:menuitem onclick="metodo('#{SessionBean.login}')" value="Integracao"  icon="ui-icon-close" ajax="false" />

todos os outros componentes do primefaces da pagina pararam de funcionar

<p:menuitem value="Noticias" action="#{MenuPrincipal.noticias}" ajax="false" />
<p:menuitem value="Quem somos" action="#{MenuPrincipal.sobrenos}" ajax="false" />
<p:menuitem value="Fale Conosco" action="#{MenuPrincipal.fale}" ajax="false" />
<p:menuitem value="Sair" action="#{MenuPrincipal.sair}" icon="ui-icon-close" ajax="false" />

3 Respostas

L

Já tentou colocar o import do jquery e o código da função no fim do arquivo assim?

...
  <script src="jquery.js"></script>
  <script>
  ...
  </script>
</body>
...
F

Como está o console do navegador? Algum erro por lá?

gustavodefreitasmene

Bom dia pessoal!
Pesquisei na net e descobrir que existe uma incompatibilidade dos componentes do Primefaces com o JQuery.
Então criei a comunicação com o JSON através do JavaScript puro mesmo.
Segue abaixo o exemplo do código que usei

// metodos para chamar o scriptcase com os relatorios do monitoramento do radar

function comunica(url){			

var Httpreq = new XMLHttpRequest(); // a new request	

Httpreq.open(GET, url, false);	

Httpreq.send(null);	

return Httpreq.responseText;

}

function metodo(usuario) {		

var cont = window.location.href;	 	//http://numero_ip_servidor:porta/MyApp/

var contexto = cont.split(MyApp);	// 2 strings -> http://numero_ip_servidor:porta/ e MyApp

var retorno = JSON.parse(comunica(contexto[0] + WebServ/integracao/medoto?login= + usuario));

window.open(retorno.aplicacao, _blank);									

}
Criado 28 de dezembro de 2016
Ultima resposta 29 de dez. de 2016
Respostas 3
Participantes 3