If I click in page number 2, it has only 1 record.
If I delete this record, my dataTable not renderize backing to the page 1 with others 5 records. It shows like if no have records and not renderize.
So, when I click in page link 1, my dataTable shows the 5 records correctly.
Is it a bug or is it something I'm wrong?
I'll show my codes:
Code: Select all
<h:form>
<h:panelGrid id="panelGridDataTable">
<p:dataTable id="produtoDataTable" var="p"
value="#{bean.produtosList}" paginator="true" rows="5"
paginatorPosition="bottom"
emptyMessage="Nenhum produto encontrado.">
<p:column sortBy="#{p.id}">
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{p.id}" />
</p:column>
<p:column sortBy="#{p.nome}">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{p.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Ações" />
</f:facet>
<p:commandLink update=":form:confirmacaoExclusao"
oncomplete="confirmacaoExclusao.show()">
<h:graphicImage id="imagemExcluir"
value="/resources/imagens/excluir.png" />
<f:setPropertyActionListener value="#{p}"
target="#{bean.produto}" />
</p:commandLink>
<p:tooltip for="imagemExcluir" value="Excluir" />
</p:column>
</p:dataTable>
</h:panelGrid>
<p:dialog id="confirmacaoExclusao" widgetVar="confirmacaoExclusao"
header="Exclusão" showEffect="fade"
hideEffect="fade" modal="true" resizable="false">
<center>
<br></br>
<h:graphicImage value="/resources/imagens/aviso.png" />
<p:spacer width="20" />
<h:outputText value="Confirma exclusão?" />
<br></br>
<h:panelGrid id="confirmaExclusaoProdutoPanelGrid" columns="2"
columnClasses="textoDireita" cellpadding="3">
<h:outputText value="ID:" styleClass="negrito" />
<h:outputText value="#{bean.produto.id}" />
<h:outputText value="Nome:" styleClass="negrito" />
<h:outputText value="#{bean.produto.nome}" />
</h:panelGrid>
<br></br>
<p:commandButton action="#{bean.excluir}"
oncomplete="confirmacaoExclusao.hide()"
value="Sim" update="panelGridDataTable" />
<p:spacer width="10" />
<p:commandButton oncomplete="confirmacaoExclusao.hide()"
value="Não" />
<br></br> <br></br>
</center>
</p:dialog>
</h:form>
Code: Select all
@ManagedBean(name = "bean")
@SessionScoped
public class Bean implements Serializable {
private static final long serialVersionUID = 1L;
private Produto produto;
private List<Produto> produtosList;
@EJB
private ProdutoDAO produtoDAO;
public void excluir() {
if (produtoDAO.excluir(getProduto())) {
getProdutoList().remove(getProduto());
}
}
public Produto getProduto() {
if (produto == null) {
produto = new Produto();
}
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public List<Produto> getProdutosList() {
if(produtosList == null){
produtosList = produtoDAO.listar();
}
return produtosList;
}
public void setProdutosList(List<Produto> produtosList) {
this.produtosList = produtosList;
}
}