Para falar do problema que estou tendo vou criar a seguinte situação…
Tenho um databable que possui um carregamento lazy dos dados…
Neste datatable tenho um evento ajax que é disparado quando uma linha é selecionada e atualiza as informações nas telas de acordo com o objeto selecionado…
O problema é que ao clicar da primeira vez não ocorre nenhuma atualização, ao clicar da segunda vez ocorre a atualização referente ao objeto do primeiro clique e assim sucessivamente…
public void carregarPedidoDaLista() {
//Aqui eu pego o pedidoAux e referencio no pedido que o objeto que eu preciso atualizar na tela
pedido = pedidoAux;
}//end method
Coloquei um System.out.print nos meus métodos getRowData e getRow da minha classe LazyDataModel e percebi que a lista me retornava um elemento a mais do que o tamanho estabelecido por mim e este elemento era sempre nulo…
A minha falha é que no managed bean eu estava inicializando a propriedade selection do <p:dataTable> no meu Bean…
Como ninguém respondeu ainda nossa dúvida a solução que eu criei foi colocar um botão na página que ao clicar dispara o evento que seria disparado pela seleção de uma linha da tabela… dessa forma primeiro marca a linha e depois clica no botão…
eu consegui da seguinte maneira, o método que contem os valores da tabela e o mesmo que carrega as informações, dai eu dei um p:ajax update na tabela e funcionou corretamente, e outro
problema que estou tendo tmb é que o id do p:ajax não são resolvidos, por exemplo no update do p:commandButton se tu colocar no update idA ele resolve, mais se tu colocar no render para form1:idA (de acordo com a hierarquia) mais com o update do p:ajax isto não funciona dai tiver que colocar na mão mesmo update=“form1:idA” por exemplo
não estou na empresa para confirmar, mais se não me engano tu não consegui dar update direto na tabela tens que colocar um componente ao redor dele para conseguir fazer isto, por exemplo um panel