Boa Tarde Pessoal.
Fiz uma dataTable paginada usando primefaces mas estou com um problema.
Está trazendo os dados na tabela, mas quando clico para filtrar ou próxima página etc, nada acontece.
Se alguem puder me ajudar, seguem os códigos:
Bean:
@Controller
@ManagedBean(name="listaEntregaMB")
@ViewScoped
public class ListaEntregaMB implements Serializable {
private static final long serialVersionUID = 1L;
private LazyDataModel<Entrega> entregas;
private Entrega selectedBean;
@Autowired
private EntregaService entregaService;
public LazyDataModel<Entrega> getEntregas(){
if(entregas == null){
entregas = new LazyEntregaDataModel(entregaService);
}
return entregas;
}
public void setEntregas(LazyDataModel<Entrega> entregas) {
this.entregas = entregas;
}
public Entrega getSelectedBean() {
return selectedBean;
}
public void setSelectedBean(Entrega selectedBean) {
this.selectedBean = selectedBean;
}
}
xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<ui:composition template="/template/commonLayout.xhtml">
<ui:define name="content">
<p:dataTable id="dataTable" var="item"
value="#{listaEntregaMB.entregas}" paginator="true"
rows="5"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="5, 10, 15"
selectionMode="single"
lazy="true"
selection="#{entregaMB.selectedBean}"
paginatorPosition="bottom">
<f:facet name="header">
Lista de Entregas Realizadas
</f:facet>
<p:column sortBy="#{item.projeto}" filterBy="#{item.projeto}">
<f:facet name="header">
<h:outputText value="Projeto" />
</f:facet>
<h:outputText value="#{entrega.projeto}" />
</p:column>
<p:column sortBy="#{item.revisao}" filterBy="#{item.revisao}">
<f:facet name="header">
<h:outputText value="Revisão" />
</f:facet>
<h:outputText value="#{item.revisao}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Usuário" />
</f:facet>
<h:outputText value="#{item.autor}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Data Entrega" />
</f:facet>
<h:outputText value="#{item.dataEntrega}" />
</p:column>
</p:dataTable>
</ui:define>
</ui:composition>
</h:body>
</html>
LazyDataModel:
public class LazyEntregaDataModel extends LazyDataModel<Entrega> {
private static final long serialVersionUID = 1L;
private EntregaService entregaService;
private List<Entrega> entregas;
public LazyEntregaDataModel(EntregaService entregaService) {
this.entregaService = entregaService;
}
@Override
public Entrega getRowData(String rowKey) {
Integer id = Integer.valueOf(rowKey);
for(Entrega entrega : entregas) {
if(id.equals(entrega.getId()));
return entrega;
}
return null;
}
@Override
public Object getRowKey(Entrega entrega) {
return entrega.getId();
}
@SuppressWarnings("unchecked")
@Override
public List<Entrega> load(int primeiro, int registrosPagina, String camposort,
SortOrder campoordenar,
Map<String, String> filtros) {
setRowCount(entregaService.retornaTotalRegistrosConsulta(
primeiro, registrosPagina, camposort, campoordenar,
filtros, Entrega.class));
return entregaService.listarPaginado(primeiro, registrosPagina,
camposort, campoordenar, filtros, Entrega.class);
}
}