Amigos, estou com um problema que acho muito curioso. Vejam:
Tenho uma tabela exibida com PrimeFaces, com vários dados. A última coluna possui dois botões, um é o excluir e o outro editar.
O botão excluir funciona perfeitamente bem. Pega o objeto da linha selecionada e exclui. Já o botão editar, deveria abrir um formulário de edição e carregar nos inputText os valores do ManagedBean. O curioso é que ele deveria pegar os mesmo dados que o botão excluir pega!
<h:panelGroup layout="horizontal">
<p:commandButton id="btEditar" icon="ui-icon-pencil"
title="Editar" onclick="dlgEditar.show()" >
</p:commandButton>
<p:commandButton id="btRemover" icon="ui-icon-trash"
title="Remover" onclick="confirmaExclusao.show()" >
</p:commandButton>
</h:panelGroup>
O managed Bean está com escopo REQUEST. O que estou fazendo de errado?
Abraços
Faz um teste, troca para SessionScoped e testa.
Não tô vendo a forma como vc passa o objeto corrente pra ação,não era pra ter um f:setPropertyActionListener ai??
Obrigado JakeFrog, mas como SessionScoped já havia testado e também não funciona.
Tudo bem, vou testar, mas por que o comando excluir funciona bem? Na minha visão o processamento será em cima dos mesmos atributos.
Nessa chamada você está chamando por ajax.
Realmente está estranho funcionar para o excluir.
Você está utilizando por dialog? Ta faltando fazer um update no form do dialog.
[quote=jakefrog]Nessa chamada você está chamando por ajax.
Realmente está estranho funcionar para o excluir.
Você está utilizando por dialog? Ta faltando fazer um update no form do dialog.[/quote]
Puxa, que brecha. É verdade.
Eu não estava atualizando o dialog.
Ficou assim:
<p:column style="width:10%">
<h:panelGroup layout="horizontal">
<p:commandButton id="btEditar" icon="ui-icon-pencil" actionListener="#{partidosBean.citar}"
title="Editar" oncomplete="dlgEditar.show()" update=":formEditarPartido:dlgEditar" >
</p:commandButton>
<p:commandButton id="btRemover" icon="ui-icon-trash" actionListener="#{partidosBean.citar}"
title="Remover" onclick="confirmaExclusao.show()" >
</p:commandButton>
</h:panelGroup>
</p:column>
Funcionou! ![:smiley: :smiley:](//www.guj.com.br/images/emoji/twitter/smiley.png?v=6)
Obrigado amigos!
Uma pergunta, talvez idiota, mas não quero ficar com essa dúvida.
Quando devo usar um f:setPropertyActionListener ?
Abraços
Olá prog.tiago.
Você pode usar para passar o objeto em si para a sessão, com o raf4ever falou.
Tem gente que utilizar o id da tabela, chama o método, passa o mesmo por paramentro e realiza uma consulta para editar o objeto para sessão.
Já com o f:setPropertyActionListener você editar o objeto para a sessão sem fazer uma consulta.
Abraço.
Enviar um objeto para a sessão teoricamente utiliza mais recursos e processamento portanto. Estou correto?
É mais adequado usar ajax então né?