Datatable Primefaces Lazy loading

6 respostas
F

Bom dia galera,
Montei minha dataTable a partir de um tutorial do site do Hebert, porém minha lista está vindo vazia.
Já refiz 2 vezes e não entendo pq não funciona, sendo que eu fiz igual o do tutorial.
Obs: o load nem chega a ser executado.

O tutorial é: http://uaihebert.com/?p=1089&page=4

Meu xhtml:
<p:dataTable id="lazyDataTable" value="#{visitantesBean.allViss}" var="vis" paginator="true" rows="10"
                                 selection="#{visitantesBean.vis}" selectionMode="single"
                                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                 rowsPerPageTemplate="5,10,15" style="width: 80%;margin-left: 10%;margin-right: 10%;">
                        <p:column>
                            <f:facet name="header">Name</f:facet>
                            <h:outputText value="#{vis.vis_nome}" />
                        </p:column>
                    </p:dataTable>
Meu Bean (VisitantesBean):
private LazyDataModel<Visitante> viss = null;
    private Visitante vis;

    public LazyDataModel<Visitante> getAllViss() {
        if(viss == null){
            viss = new VisitanteModel();
        }
        return viss;
    }
    public Visitante getVis() {
        if(vis == null){
            vis = new Visitante();
        }
        return vis;
    }
    public void setVis(Visitante vis) {
        this.vis = vis;
    }
Meu Lazy model (VisitanteModel.java):
public class VisitanteModel extends LazyDataModel<Visitante> {
    private List<Visitante> visitantes;
    @Override
    public List<Visitante> load(int startingAt, int maxPerPage, String sortField, SortOrder sortOrder, Map<String, String> filters) {
        System.out.println("Load executado.");
        VisitanteDao visitanteDao = new VisitanteDao();
        visitantes = visitanteDao.findVisitantes(startingAt, maxPerPage);
        // set the total of players
        if (getRowCount() <= 0) {
            setRowCount(visitanteDao.countVisitantesTotal());
        }
        // set the page dize
        setPageSize(maxPerPage);
        return visitantes;
    }
    @Override
    public Object getRowKey(Visitante visitante) {
        return visitante.getVis_id();
    }
    @Override
    public Visitante getRowData(String visitanteId) {
        Integer id = Integer.valueOf(visitanteId);

        for (Visitante visitante : visitantes) {
            if (id.equals(visitante.getVis_id())) {
                return visitante;
            }
        }
        return null;
    }
}

Obrigado desde já!
Abraço!

6 Respostas

K

faça um teste

declare assim seu gridlazy.

private VisitanteDataModel viss;

e altere seu get para

public VisitanteDataModel getAllViss() {  
    if(viss == null){  
        viss = new VisitanteModel();  
    }  
    return viss;  
}
C

experimente colocar na datatable lazy=“true”

F

Obrigado pelas respostas meus amigos!
Só com o lazy=true já resolveu meu problema.
O load está sendo executado…

Abraço! Qualquer novidade volto a postar!

K

Imaginei q isso já estava como true.

C

beleza que bom que resolve boa sorte para voce…

H

O lazy=“true” foi adicionado depois que o post foi criado. -_-’’

Primefaces sempre tem a mania de criar algo que quebre com o antigo viu… -_-’’

Criado 28 de fevereiro de 2013
Ultima resposta 28 de fev. de 2013
Respostas 6
Participantes 4