2
respostas

Lazy loading is not implemented

O que esta acontecendo de errado? No tutorial manda sobrescrever o metodo load com a anotação Override, mas fica com erro de The method load(int, int, String, SortOrder, MappingChange.Map) of type LivroDataModel must override or implement a supertype method

package br.com.caelum.livraria.modelo;

import java.util.List;

import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import com.sun.javafx.collections.MappingChange.Map;

import br.com.caelum.livraria.dao.DAO;

public class LivroDataModel extends LazyDataModel<Livro> {

    /**
     * 
     */
    private static final long serialVersionUID = 2948232237230849780L;

    DAO<Livro> dao = new DAO<Livro>(Livro.class);

    public LivroDataModel() {
        super.setRowCount(dao.quantidadeDeElementos());
    }



    public List<Livro> load(int inicio, int quantidade, String campoOrdenacao, SortOrder sentidoOrdenacao, Map<String, Object> filtros) {
        return dao.listaTodosPaginada(inicio, quantidade);
    }



}
<p:dataTable id="tabelaLivros" value="#{livroBean.livroDataModel}"
                    var="livro" paginator= "true" rows="5" lazy="true">
                    <!--o atributo headerText subtitui o f:facet  -->
                    <f:facet name="header">Livros</f:facet>

                    <!-- Existem outros MatchModes como endsWidth, contains, exact, equals, lte (menos ou igual) e gte (maior ou igual)  -->
                    <p:column headerText="Titulo" sortBy="#{livro.titulo}" filterBy="#{livro.titulo}" filterMatchMode="contains" >
                        <h:outputText value="#{livro.titulo}" />
                    </p:column>

                    <p:column headerText="ISBN" sortBy="#{livro.isbn}" filterBy="#{livro.isbn}" filterMatchMode="contains" >
                        <h:outputText value="#{livro.isbn}" />
                    </p:column>

                    <p:column headerText="Preço" sortBy="#{livro.preco}" filterBy="#{livro.preco}" filterFunction="#{livroBean.precoEhMenor}" >
                        <h:outputText value="#{livro.preco}">
                            <f:convertNumber type="currenty" pattern="R$ 0.00"
                                currencySymbol="R$" locale="pt_BR" />
                        </h:outputText>
                    </p:column>
                    <p:column headerText="Data" sortBy="#{livro.dataLancamento.time}" filterBy="#{livro.dataLancamento.time}" filterMatchMode="contains">
                        <h:outputText value="#{livro.dataLancamento.time}">
                            <f:convertDateTime pattern="dd/MM/yyy HH:mm" />
                            <!-- timeZone="America/Sao_Paulo" -->
                        </h:outputText>
                    </p:column>
                    <!--CARREGANDO DADOS PARA O TEXT BOX E PERMITE ALTERAÇÂO  -->
                    <p:column>
                        <f:facet name="header">Alterar</f:facet>
                        <h:commandLink value="Alterar">
                            <f:setPropertyActionListener target="#{livroBean.livro}" value="#{livro}" /> <!-- esta tag  -->
                        </h:commandLink>
                    </p:column>
                    <!--EFETUA REMOÇÃO DO LIVRO  -->
                    <p:column  >
                        <f:facet name="header">Remover</f:facet>
                        <h:commandLink value="remove" action="#{livroBean.remover(livro)}"></h:commandLink>
                    </p:column>
                </p:dataTable>
2 respostas

int, int, String, SortOrder, MappingChange.Map

Esses são os tipos dos parâmetros que você colocou no método load? Se vc tiver importado algo errado, talvez um Map de java.util, o erro que você cita vai ocorrer mesmo :).

Usei assim a implementação do método


import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

 public List<Livro> load(int inicio, int quantidade, String campoOrdenacao, SortOrder sentidoOrdenacao, Map<String, Object> filtros) {
        return dao.listaTodosPaginada(inicio, quantidade);
    }