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

JSF II - aula 3 - exercício 9

Senhores Boa tarde!!! Estou com uma dúvida na página autor.xhtml se eu deixar o código como está na explicação o botão alterar não funciona:

<p:commandButton  icon="fa fa-fw fa-edit" update=":autor" >
                <f:setPropertyActionListener value="#{autor}" target="#{autorBean.autor}"/>
                </p:commandButton>

Contudo se fizer dessa maneira:

<p:commandButton  icon="fa fa-fw fa-edit" update=":autor" action="#{autorBean.carregar(autor)}" />

Ele funciona normalmente. Se entendi o update referencia a renderização no form autor para carregar os dados e poder ser atualizado. Alguém poderia explicar o pq não funciona da primeira maneira?

2 respostas

O que o update faz é atualizar aquele componente com o id "autor" e os demais componentes contidos dentro dele.

O fato de não funcionar seu código da primeira maneira implementado, creio que tenha a ver com o ciclo de execução do JSF. Provavelmente o update deve estar sendo chamado antes de ser setado o target do seu "setPropertyActionListener", isto é fácil de ver fazendo um debug.

Já na segunda implementação o update com certeza é executado após a execução da action contida no commandButton.

solução!

Obrigado Luiz, Achei o erro aqui. Esqueci de declarar na classe AutorBean:

public void setAutor(Autor autor) {
        this.autor = autor;

Depois disso problema resolvido.