Bom dia!
Pessoal estou tentando implementar um filtro no data table conforme http://www.primefaces.org/showcase-labs/ui/datatableLazy.jsf sendo que estou fazendo acesso a base de dados e trazendo os dados páginados porém até agora não obtive sucesso. Por esso motivo desejo uma ajuda, lembrando que já procurei no google e no forúm e não achei uma solução.
Agradeço a atenção. Segue código:
lista.xhtml
<p:panel header="Funcionários">
<h:form id="form">
<p:dataTable id="funcionario_table"
emptyMessage="nenhum registro encontrado!" styleClass="style1"
value="#{funcBean.funcionarios}" var="func"
rows="5" paginator="true" lazy="true" dynamic="true" sortBy="#{func.nome}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" widgetVar="carsTable"
loadingMessage="carregando">
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Search all fields:" />
<p:inputText id="globalFilter" onkeyup="carsTable.filter()"
style="width:150px" />
</p:outputPanel>
</f:facet>
<p:column headerText="Nome" filterBy="#{func.nome}" sortBy="#{func.nome}" >
<h:outputText value="#{func.nome}" />
</p:column>
<p:column headerText="CPF">
<h:outputText value="#{func.cpf}" />
</p:column>
<p:column headerText="Matrícula">
<h:outputText value="#{func.matricula}" />
</p:column>
<p:column headerText="Aréa">
<h:outputText value="#{func.area}" />
</p:column>
<p:column headerText="Cargo" filterBy="#{func.cargo}">
<h:outputText value="#{func.cargo}" />
</p:column>
<p:column headerText="Telefone">
<h:outputText value="#{func.telefone}" />
</p:column>
<p:column headerText="Celular">
<h:outputText value="#{func.celular}" />
</p:column>
</p:dataTable>
</h:form>
</p:panel>
FuncBean.java
@ManagedBean(name = "funcBean")
@SessionScoped
public class FuncBean implements Serializable {
private FuncionarioFachada fachada;
private LazyDataModel<Funcionario> funcionarios;
private String filtro;
public FuncBean() {
super();
fachada = new FuncionarioFachada();
}
/* getters e setters */
public LazyDataModel<Funcionario> getFuncionarios()
throws RegraNegocioException {
try {
funcionarios = new LazyDataModel<Funcionario>() {
@Override
public List<Funcionario> load(int first, int pageSize,
String sortField, SortOrder sortOrder,
Map<String, String> filters) {
List<Funcionario> lazyFunc = new ArrayList<Funcionario>();
try {
//lazyFunc = fachada.paginacao(first, pageSize);
lazyFunc = fachada.listaPaginada(first, pageSize, filtro);
} catch (RegraNegocioException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return lazyFunc;
}
};
funcionarios.setPageSize(10);
funcionarios.setRowIndex(1);
funcionarios.setRowCount(fachada.contaTodos());
} catch (Exception e) {
throw new RegraNegocioException(e);
}
return funcionarios;
}
public void setFuncionarios(LazyDataModel<Funcionario> funcionarios) {
this.funcionarios = funcionarios;
}
public String getFiltro() {
return filtro;
}
public void setFiltro(String filtro) {
this.filtro = filtro;
}
}