Boa tarde,
estou tendo problemas com o componente do PrimeFaces <p:dataTable>, o meu intuito é implementar um sistema de busca com paginação Lazy.
Este é o componente da minha View.
//pesquisaController.lista é o LazyDataModel do primeFaces
<p:dataTable id="lazyDataTable" value="#{pesquisaController.lista}" var="animal" paginator="true" rows="10"
selection="#{pesquisaController.selecionado}" selectionMode="single" widgetVar="minhatable"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" style="width: 80%;margin-left: 10%;margin-right: 10%;" lazy="true" rendered="#{pesquisaController.inicio}" >
// omiti a parte das colunas pra ficar mais fácil a compreenção
Este é o método do controller que é chamado pelo botão de pesquisar.
Sempre que clicado ele seta a “Pesquisa” como atributo do Controller e inicializa o model que o dataTable utiliza com base nos atributos da pesquisa.
public void efetuarPesquisa(ActionEvent event){
Pesquisa p = copiarAtributosPesquisa(getPesquisa()); // Pesquisa um Pojo pra guardar os atributos da pesquisa
validarObjetoPesquisa(p); // efetuo a validação dele
setPesquisaAtual(p);// armazeno como propriedade do controller
setInicio(true); // booleano que da Render no DataTable
lista = new LazyDataModel(){ // LazyDAtaModel do prime
public List load(int first, int pageSize, String arg2, boolean arg3,
Map arg4) {
long numero = AnimalDAO.CobterPorPesquisa(getPesquisaAtual());
int n = (int) numero;
lista.setRowCount(n); // seto o total de resultado da pesquisa
return AnimalDAO.obterPorPesquisa(getPesquisaAtual(),first, pageSize); // obtenho e retorno o resultado dela
}
};
}
O que me acontece atualmente é que quando clico em “Pesquisar” o dataTable aparece como se não houvessem resultados, entretanto se eu clicar nos botões do paginador após esta pesquisa, os resultados são carregados normalmente conforme o planejado.
O meu problema é que não consigo fazer o dataTable mostrar de cara a primeira página de resultados sem ter que antes clicar na paginação, provavelmente eu esteja fazendo algo errado com o modelo de lista Lazy do prime, gostaria de saber como proceder neste caso.
Desde já agradeço a ajuda.
RESOLUÇÂO-
Caso alguém sofra do mesmo problema descrito, conseguir resolver chamando manualmente o método load do LazyDataModel dentro do métoco de ação do botão de pesquisa.
[]'s