Oies!
Estou mais uma vez com problemas com a tabela do PrimeFaces… :?
Dessa vez é o seguinte: eu tenho uma p:dataTable com paginação que tem 5 linhas por página, até aí tudo bem…
Fazendo uns testes eu inseri 6 registros nessa tabela, restando assim 1 linha para a página 2, aí por um acaso eu resolvi remover esse único elemento da página 2.
E quando eu removo esse elemento, a tabela não renderiza direito, segundo a paginação ele estaria na página 1, mas não trás os elementos da página 1, na realidade não trás nada.
Eu acredito que deve se tratar de um bug, por acaso alguém já testou isso? Eu estaria fazendo alguma coisa de errado no código?
Sendo assim segue o código para análise:
Form da tabela, por causa do commandButton:
<h:form id="formTabelaAutorizados">
<p:dataTable var="autorizado" value="#{clienteBean.cliente.autorizados}" selectionMode="single" rows="5" paginator="true"
emptyMessage="Autorizados não encontrados" style="width: 100%" loadingMessage="Buscando..." id="tabelaAutorizados" >
<p:column>
<f:facet name="header"><h:outputText value="Nome"/></f:facet>
<h:outputText value="#{autorizado.nome}" />
</p:column>
<p:column>
<f:facet name="header"><h:outputText value="Telefone"/></f:facet>
<h:outputText value="#{autorizado.telefone}" />
</p:column>
<p:column>
<f:facet name="header"><h:outputText value="Observação"/></f:facet>
<h:outputText value="#{autorizado.observacao}" />
</p:column>
<p:column>
<p:commandButton actionListener="#{clienteBean.selecionarAutorizado}" update="formDadosAutorizado,formDesabilitarAutorizado" image="selecionar" title="Selecionar" >
<f:attribute name="codigo" value="#{autorizado.codigo}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
Form que é atualizado ao clicar no commandButton da tabela:
<h:form id="formDadosAutorizado">
<p:panel>
<h:panelGrid columns="6" columnClasses="coluna40,coluna20,coluna40" cellpadding="3" width="100%">
<h:outputText value="Nome" />
<h:outputText value="Telefone" />
<h:outputText value="Observação" />
<h:outputText />
<h:outputText />
<h:outputText />
<h:inputText id="nomeAutorizado" value="#{clienteBean.autorizado.nome}" style="width: 100%" required="true" requiredMessage="Informe o nome" />
<p:inputMask id="telefoneAutorizado" mask="(999) 9999-9999" value="#{clienteBean.autorizado.telefone}" style="width: 100%" />
<h:inputText id="observacaoAutorizado" value="#{clienteBean.autorizado.observacao}" style="width: 100%" />
<p:commandButton image="salvar" title="Salvar" actionListener="#{clienteBean.gravarAutorizado}" update="growl,formDadosAutorizado,formTabelaAutorizados"/>
<p:commandButton image="desabilitar" title="Desabilitar" onclick="dlgDesabilitarAutorizado.show();" rendered="#{clienteBean.autorizado.codigo > 0}" immediate="true" />
</h:panelGrid>
</p:panel>
</h:form>
e enfim o confirmDialog que faz a remoção do registro e atualiza os dados da tabela:
<p:confirmDialog widgetVar="dlgDesabilitarAutorizado" header="Desabilitar Autorizado" position="center" message="Deseja desabilitar o autorizado?" severity="alert" >
<h:form id="formDesabilitarAutorizado">
<p:commandButton value="Sim" actionListener="#{clienteBean.desabilitarAutorizado }" update="tabelaAutorizados,growl,formDadosAutorizado,formTabelaAutorizados" oncomplete="dlgDesabilitarAutorizado.hide()" immediate="true" image="ok"/>
<p:commandButton value="Não" onclick="dlgDesabilitarAutorizado.hide()" immediate="true" image="cancelar" />
</h:form>
</p:confirmDialog>




