faelbsr
Novembro 21, 2011, 1:06pm
#1
Estou com o seguinte problema em uma aplicação utilizando o primefaces…
Tenho vários componentes que utilizam da tag <p:ajax> e outros commandobuttons e commandlinks que também fazem requisição ajax…
Acontece que quando eu vou inserir um componente novo que também deverá fazer uma requisição ajax, essa requisição não é disparada quando solicitada. Ela é disparada somente se uma outra requisição for feita por outros componentes…
Alguém já teve esse problema e sabe como resolver… já estou perdendo o juízo por conta disto…
obrigado…
Não entendi.
Você está querendo dizer que tem um h:commandButton para disparar a ação e quer que ao adicionar outro button, por exemplo, ele tb utilize ajax?
faelbsr
Novembro 21, 2011, 1:33pm
#3
Não cara… vou explicar melhor…
Eu já tenho vários componentes que fazem requisições ajax e preciso adicionar mais componentes que fazem requisições ajax também…
Imagine o seguinte cenário…
O código abaixo tem dois commandButtons.
O primeiro quando clicado chama o método 1 do meuBean e imprime “Executando o método 1”;
O segundo quando clicado chama o método 2 do meuBean e imprime “Executando o método 2”;
<p:commandButton update=":form,:algum_componente" actionListner="#{meuBean.método1}" value="Requisição 1"></p:commandoButton>
<p:commandButton update=":form,:algum_componente" actionListner="#{meuBean.método2}" value="Requisição 2"></p:commandoButton>
Até ai está tudo certo.
O problema começa quando eu adiciono um novo componente, por exemplo um terceiro commandButton. Pois ao clicar no terceiro commandButton deveria imprimir “Executando o método 3” quando na verdade não imprime nada…
Porém ao clicar no commandButton 3 e depois clicar em outro commando button, por exemplo o commandbutton 1 , a aplicação imprime -> “Executando o método 1 , Executando o método 3”…
<p:commandButton update=":form,:algum_componente" actionListner="#{meuBean.método3}" value="Requisição 3"></p:commandoButton>
Acredito que engine do primefaces está se perdendo com as requisições ou eu não estou sabendo se há alguma configuração para acertar isto…
não sei se é engine do primefaces uma vez que ele utiliza o Mojara para controle disso.
no JSF comum você separa por espaço em branco e não vírgulas. Tente alterar e tente isso.
tente colocar immediate=true no seus botões e veja se vai.
faelbsr
Novembro 21, 2011, 1:45pm
#5
Funfo não camarada…
mas de qualquer forma vlw pela ajuda ai…
faelbsr
Novembro 21, 2011, 1:51pm
#6
Tem algo muito curioso neste problema…
Veja, se eu coloco o meu commandoButton 3 para executar o método do commandButton 2 ou 1 ele executa sem problemas…
Outras vezes ao trocar o nome do método funcionou… (Por isso minha desconfiança em ser bug no primefaces)
amigo poste o codigo todo da sua pagina, voce esta rodando em qual browser?
e onde esta a tag :pajax
pode está acontecendo que o botão está renderizando o componente com o novo botão, experimenta coloca 1 outputpanel fora do componente que vc quer renderizar e manda o botao novo renderiza esse outputpanel…
faelbsr
Novembro 21, 2011, 2:49pm
#9
<h:column>
<div style="width:100%; text-align:right">
<p:inputText styleClass="pedido_fields_currency" value="#{dtPessoaFaces.estoque.quantidade}">
<f:convertNumber maxFractionDigits="3" minFractionDigits="2"/>
<p:ajax update=":form1:dt_products,:formd:edit_total" event="blur" listener="#{dtPessoaFaces.recalcular()}"></p:ajax>
</p:inputText>
</div>
</h:column>
<p:inputText id="edit_unitario" styleClass="pedido_fields_currency" value="#{dtPessoaFaces.estoque.unitario}">
<f:convertNumber maxFractionDigits="3" minFractionDigits="2"/>
<p:ajax update=":form1:dt_products,:formd:edit_total,:formd:edit_desconto" event="blur" listener="#{dtPessoaFaces.recalcularByUnitarioEdit()}"></p:ajax>
</p:inputText>
Ai estão algumas partes que eu uso o p:ajax, é impossível postar o código todo pois é imenso…
Eu estou usando o chrome e o firefox como navegador…
Já atualizei a versão do primefaces pra m4 e mesmo assim não funfa
sua pagina esta assim
<f:view contentType="text/html">
<h:head>
</h:head>
<h:body>
</h:body>
</f:view>
Repare a tag f:view antes do head
e ao invés de head é h:head
e ao invés de body é h:body
faelbsr
Novembro 21, 2011, 3:17pm
#11
Eu estou usando um template, vou postar…
TEMPLATE
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<ui:composition template="template.xhtml">
<ui:define name="navigationBar">
<h:form>
#{loginFaces.loadEmpresaId()}
</h:form>
</ui:define>
<ui:define name="content">
<h:form>
<div id="form_login">
<h:panelGrid border="0">
<h:column>
<h:outputText value="Login:"></h:outputText>
<p:inputText value="#{loginFaces.login}"></p:inputText>
</h:column>
<h:column>
<h:outputText value="Senha:"></h:outputText>
<p:password feedback="false" value="#{loginFaces.senha}"></p:password>
</h:column>
<h:column>
<h:outputText value="Eu sou: "></h:outputText>
<p:selectOneMenu value="#{loginFaces.selectedTypeOfUsers}" var="p">
<f:selectItems value="#{loginFaces.listOfUserTypes}"></f:selectItems>
<f:converter converterId="TypeOfUsersConverter"></f:converter>
<p:column>
#{p.description}
</p:column>
<p:column>
<p:graphicImage url="/resources/img/#{p.pathOfImg}"></p:graphicImage>
</p:column>
</p:selectOneMenu>
</h:column>
</h:panelGrid>
<div style="position: relative; left: 70px; top: 10px">
<p:commandLink ajax="false" action="#{loginFaces.doLogin}">
<p:graphicImage url="/resources/img/botao_entrar.png"></p:graphicImage>
</p:commandLink>
</div>
</div>
</h:form>
</ui:define>
</ui:composition>
</html>
ALGUMA OUTRA PÁGINA
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<ui:composition template="/template.xhtml">
<ui:define name="navigationBar">
<h:form>
MENU
</h:form>
</ui:define>
<ui:define name="content">
CONTEÚDO
</ui:define>
</ui:composition>
</html>
é correto fazer assim?
faelbsr
Novembro 21, 2011, 3:51pm
#12
Galera… deu certo agora, realmente eu não sei qual é o problema e nem qual a solução… fiz o que o tiago falou e deu certo… Entretanto o meu System.out.print() continua imprimindo só depois que é acionado algum componente depois do que eu quero que realmente seja executado…
vlw todo mundo ai…