Richfaces: Problem com a geração HTML de DataScroller/Datatable
-
22-09-2019 - |
Pergunta
Estou usando Richfaces 3.3.1 com JSF Re 1.2 e Facelets. Eu tenho um problema estranho com a geração HTML de um rico: Datatable conectado a um rico: DataScroller.
<h:form id="br"> ... <rich:datascroller id="scrt" page="#{searchBookings.page}" stepControls="hide" renderIfSinglePage="false" for="bt" align="left" reRender="ttips,bt"/> <rich:dataTable id="bt" rows="20" rendered="#{!empty searchBookings.bookings}" value="#{searchBookings.bookings}" var="row" binding="#{searchBookings.table}"> ....
Na primeira vez que a página carrega, tudo funciona bem. Se eu visitar a mesma página pela segunda vez, alterando as páginas através do DataScroller não atualiza mais o DataTable. Acertar o botão de atualização resolve o problema.
Adicionar A4J: Log revelou este aviso:
warn[14:50:07,259]: Node for replace by response with id br:bt not found in document
De fato, ao inspecionar o HTML, a página "correta" se parece com a seguinte:
<table class="dr-table rich-table " id="br:bt" ....
Enquanto a página "ruim" se parece com a seguinte:
<table class="dr-table rich-table " id="br:bt:0" ....
Observe o ": 0" no final do ID, ele não deve estar lá. O que poderia estar causando isso?
Obrigado por qualquer entrada.
Solução
Ok, encontrou. Em algum lugar no feijão de apoio eu fiz
tabela.setRowIndex (0);
O que eu queria fazer era
tabela.setFirst (0);
O primeiro aparentemente faz com que o gerador assuma que ele está gerando linhas, então ele retorna um ID da linha, anexando ": 0". Não tenho idéia de como isso afeta apenas a segunda vez que a página é gerada. Espero que isso seja útil para outra pessoa uma vez.