Paginação sob demanda no hibernat e primefaces 3.0 M3

0 respostas
C
Pessoal estou precissando fazer uma paginação sob demamda na minha p:dataTable, para isso estou usando o primefaces 3.0 M3 e o hibernat. Vou postar meus códigos para ver se alguérm pode me ajudar; CarretaDAO
public interface CarretaDAO {

    ..............

    public List<Carreta> getBuscaCodigo(Integer codigocarreta);
}
CarretaDAOImpl
public class CarretaDAOImpl extends GenericDAO<Carreta> implements CarretaDAO {

    private static final long serialVersionUID = 1L;
    private Session session;

    public CarretaDAOImpl(Session session) {
        this.session = session;
    }

    public CarretaDAOImpl() {
        this.session = getSession();
    }
  
    ..........

    @SuppressWarnings("unchecked")
    public List<Carreta> getListaPaginado(int inicio, int quantidade) {
        Session ses = getSession();
        Query query = ses.createQuery("SELECT e FROM Carreta e").setFirstResult(inicio).setMaxResults(quantidade);

        List<Carreta> lista = (List<Carreta>) query.list();
        ses.close();
        return lista;
    }
}
LazyCarretaDataModel
public class LazyCarretaDataModel extends LazyDataModel<Carreta> {

    private CarretaDAO carretaDAO = new CarretaDAOImpl();

    public LazyCarretaDataModel(CarretaDAO carretaDAO) {
        this.carretaDAO = carretaDAO;
        setRowCount(Long.valueOf(carretaDAO.count()).intValue()); //Aqui um método que retorne o número total de linhas do banco
    }

    @Override
    public List<Carreta> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
        int page = first == 0 ? 0 : first / pageSize;
        List<Carreta> carretas = carretaDAO.getListaPaginado(first, page);  //Aqui um método que possa ser passado por parametro o dados da paginação
        return carretas; //Retorna uma lista com somente os dados já filtrados no banco
    }

    @Override
    public Object getRowKey(Carreta object) {
        return object;
    }

    @Override
    public Carreta getRowData(String rowKey) {
        return super.getRowData(rowKey);
    }
}
CarretaMBean
public class CarretaMBean implements Serializable {
    @PostConstruct
    public void init(){
        setLazyModel(new LazyCarretaDataModel(carretaDAO));
    }

   public LazyDataModel<Carreta> getLazyModel() {
        return lazyModel;
    }

    public void setLazyModel(LazyDataModel<Carreta> lazyModel) {
        this.lazyModel = lazyModel;
    }

   ..........

}
carreta.xhtml
<p:dataTable id="dtCarreta" value="#{carretaMBean.lazyModel}" lazy="true" var="item" paginator="true" rows="5"
                             emptyMessage="#{msgs.dtVazia}" rowsPerPageTemplate="5,10,15" selection="#{carretaMBean.selectedCarretas}"
                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink}
                             {LastPageLink} {RowsPerPageDropdown}" rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}"
                             rowIndexVar="rowIx">
                    
                    <f:facet name="header">
                        <p:commandButton id="cbtGravar" value="#{msgs.cbtGravar}" update="frmCadastrarCarreta:pgSalvar"
                                         oncomplete="multiCarDialog.show()" image="ui-icon-disk">
                            <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.cbtAlterar}" />
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.cbtSalvar}" />
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.cbtLimpar}" />
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.dSalvar}" />
                        </p:commandButton>

                        <p:commandButton id="cbtEditar" value="#{msgs.cbtAlterar}"
                                         update="frmCadastrarCarreta:pgSalvar, frmCadastrarCarreta:msgs"
                                         oncomplete="editar(xhr, status, args)"
                                         image="ui-icon-disk"
                                         action="#{carretaMBean.editar}">
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.cbtAlterar}" />
                            <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.cbtSalvar}" />
                            <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.cbtLimpar}" />
                            <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.dSalvar}" />
                        </p:commandButton>

                        <p:commandButton id="btnExcluirCarreta" value="#{msgs.cbtExcluirCarreta}"
                                         image="ui-icon ui-icon-close" oncomplete="excluir(xhr, status, args)"
                                         action="#{carretaMBean.excluir}" update="frmCadastrarCarreta:msgs">
                            <f:setPropertyActionListener value="#{item}" target="#{carretaMBean.selectedCarreta}" />
                            <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.dSalvar}" />
                        </p:commandButton>
                    </f:facet>

                    <p:column selectionMode="multiple" />
                    <p:column id="clnCodCarreta" style="width: 50px" >
                        <f:facet name="header">
                            <h:outputText id="optCodigoCarreta" value="#{msgs.optTableCodigoCarreta}" />
                            <br/>
                            <p:inputText id="iptFiltroCodCarreta" value="#{carretaMBean.codigo}" size="12">
                                <p:ajax event="keyup" update="dtCarreta" listener="#{carretaMBean.buscaCodigo}" oncomplete="FocoFiltrarCod(xhr, status, args)"/>
                            </p:inputText>
                        </f:facet>
                        <h:outputText value="#{item.codigocarreta}"/>
                    </p:column>
                    <p:column id="clnDescricaoCarreta">
                        <f:facet name="header">
                            <h:outputText id="optDescricaoCarreta"
                                          value="#{msgs.optTableDescricaoCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.descricao}"/>
                    </p:column>
                    <p:column id="clnPlaca" sortBy="#{item.placa}" filterBy="#{item.placa}">
                        <f:facet name="header">
                            <h:outputText value="#{msgs.optTablePlacaCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.placa}"/>
                    </p:column>
                    <p:column id="clnAno" sortBy="#{item.ano}" filterBy="#{item.ano}">
                        <f:facet name="header">
                            <h:outputText value="#{msgs.optTableAnoCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.ano}"/>
                    </p:column>
                    <p:column id="clnCor" sortBy="#{item.cor}" filterBy="#{item.cor}">
                        <f:facet name="header">
                            <h:outputText value="#{msgs.optTableCorCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.cor}"/>
                    </p:column>
                    <p:column id="clnCarroceira" sortBy="#{item.carroceria.descricao}"
                              filterBy="#{item.carroceria.descricao}">
                        <f:facet name="header">
                            <h:outputText value="#{msgs.optTableCarroceriaCarreta}" />
                        </f:facet>
                        <h:outputText value="#{item.carroceria.descricao}"/>
                    </p:column>

                    <f:facet name="footer">
                        <h:outputText value="#{msgs.contaRegistros} #{carretaMBean.carretas.rowCount}"/>
                    </f:facet>
                </p:dataTable>

O problema é que não aparece nenhum dado na tabela. Alguém tem alguma ideia?
Abraço.

Criado 17 de outubro de 2011
Respostas 0
Participantes 1