Problema com rowSelect em dataTable (Lazy) no PrimeFaces

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…

os códigos


<p:dataTable var="dt_pedido"
                                 paginator="true"
                                 lazy="true"
                                 rows="10"
                                 selectionMode="single"
                                 value="#{dtPessoaFaces.lazyPedidoDataModel}"
                                 selection="#{dtPessoaFaces.pedidoAux}"
                                 >
                        
                        <p:ajax process="@this" listener="#{dtPessoaFaces.carregarPedidoDaLista()}" event="rowSelect" 
                                oncomplete="search_box_pedido.hide()" 
                                update="form, form1, form_totais"
                         ></p:ajax>
       .
       .
       .

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

TO com um problema parecido, vc conseguiu resolver ai?

Sim cara…

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…

Bastou apenas não inicializar que funcionou

Exemplo

<p:dataTable var="dt_pedido" paginator="true" lazy="true" rows="10" selectionMode="single" value="#{dtPessoaFaces.lazyPedidoDataModel}" selection="#{dtPessoaFaces.pedidoAux}" >

Bean com erro


Pedido pedidoAux = new Pedido();

Bean corrigifo


Pedido pedidoAux;

estou com o mesmo problema,
tenho o xhtml

<p:dataTable id=“consulta” value="#{xontrollermodel}" var=“dto”
selectionMode=“single” selection="#{controller.selectionValue}" …

><p:ajax event=“rowSelect” listener="#{controller.carregarConsulta2()}" update=“consulta2” />

mais o problema é que ele chama o metodo carregarConsulta2 antes do set do selectionValue no controller, tem alguma solução?

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…

GAMbIARRA heheh

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

tente colocar o atributo imediate de p:ajax como true