Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

p:commandButton não chama o método definido no atributo action

Boa noite pessoal, tô me deparando com vários comportamentos estranhos na aplicação que desenvolvo, comportamentos esses que penso serem coisas ligadas diretamente ao primefaces e não a qualquer outra biblioteca utilizada. Tenho o seguinte botão numa página:

<p:commandButton update="@all" icon="fa fa-fw fa-search" action="#{usuarioBean.visualizaUsuario}" >
    <f:setPropertyActionListener value="#{usuario}" target="#{usuarioBean.usuario}" />
</p:commandButton>

Em uma página o botão funciona e em outra ele nem sequer chama alguma action, posso trocar por outro bean, chamar outro método, nada acontece. Ele dá o update @all e fica na mesma pagina, não acusa nada no console, nenhuma exception. Ambos os botões estão dentro da tag h:form do JSF. Andei percorrendo a web e vi várias pessoas falando desse problema, mas não consegui solucionar. Ja tentei trocar action por actionListener, setar ajax="false" usar immediate, nada me ajudou.

Uma outra curiosidade pra vocês: numa outra página em que eu estava trabalhando tinha dois botões e um deles nao funcionava, somente um, resolvi entao fazer um teste inusitado, deixar os dois botões identicos com as memas actions, e ainda assim somente o primeiro funcionava e o segundo não kkk Tô usando o PF 6.1 mas tentei com o 6.0 agora a pouco e nada...

2 respostas

A única coisa que me parece estranha é ter o setPropertyActionListener associado a um botão, que também já tem uma action.. nem sei sobre o comportamento, só pareceu estranho.

solução!

Opa Alberto, consegui resolver aqui. Percebi que eu tinha na página aberta um escopo no bean diferente do escopo do outro bean para a página que eu estava indo. Em um eu tinha request e no outro "view". Deixei ambos com escopo view e ficou tudo certo.

Lembrando que tô utilizando Spring e que esse escopo view foi criado por mim como sugere esse link: https://www.primefaces.org/port-jsf-2-0s-viewscope-to-spring-3-0/