setPropertyActionListener executa depois do actionListener, pq?

Saudações nobres…

Vocês poderiam me disser pq o

setPropertyActionListener target="#{cadClienteMB.cadCliente}" value="#{p}"

Executa depois do

actionListener="#{cadClienteMB.prepararRegistro}"

Achei muito bacana a utilização do setPropertyActionListener mas ele não funciona corretamente ou eu não sei como usá-lo.

Deveria ser executado antes do actionListener, pois ele é o parâmetro q estou passando para o método prepararRegistro

Qual o problema desse cara?

                                <p:commandButton value="Alterar"
                                                 actionListener="#{cadClienteMB.prepararRegistro}"
                                                 oncomplete="dialogCliente.show()" 
                                                 update=":frmClienteModal:infosCliente, :frmMsgErro:pnlMsgErros">
                                    <f:setPropertyActionListener target="#{cadClienteMB.cadCliente}" value="#{p}" />  
                                </p:commandButton>

amigo ao usar o setPropertyActionListene ele espera a requisição http acabar para ser iniciado ou seja ele espera o evendo ser concluido para iniciar uma nova requisição.

Então a solução é ?

mas entao para que serve o tal de setPropertyActionListene, quando posso usá-lo ? ?

O fluxo é:

  • ActionListener
  • setPropertyActionListener
  • Action

Nesse seu caso, acho que seria interessnte trocar o :

actionListener="#{cadClienteMB.prepararRegistro}"

por

action="#{cadClienteMB.prepararRegistro}"

Ok, mas acho q vo voltar a usar f:param

                                <p:commandButton  actionListener="#{cadClienteMB.prepararRegistro}"
                                    value="Alterar"                                     
                                    oncomplete="dialogCliente.show()" 
                                    update=":frmClienteModal:infosCliente, :frmMsgErro:pnlMsgErros">
                                    <f:param id="regTblAlter" name="regTblAlter" value="#{p}"/>  
                                </p:commandButton>

Achei seria mais simples usar setPropertyActionListener

mas de qualquer forma obrigado…

t+

:slight_smile:

Acho melhor você não usar o f:param, vai tornar o código mais complexo no Managed bean, trocando o actionListener por action não deu certo?

Vc ta certo quando fala complexo, pois o f:param exige no Managed bean

esse código…

 UIParameter component = (UIParameter)Evento.getComponent().findComponent("regTblAlter"); 

mas fiz a troca por action, mas não tive muito sucesso…
vo usar o f:param

mas obrigado pela atenção
t+