title: primefaces lazy data loading and hibernate, java.lang.NullPointerException error
body: <p>I followed the example of the page of primefaces (<a href="http://www.primefaces.org/showcase/ui/datatableLazy.jsf" rel="nofollow">http://www.primefaces.org/showcase/ui/datatableLazy.jsf</a>), and it worked but because the example is loading the list on the constructor it is no exactly lazy loading.  I understand that is a dummy example, so on my bean I added this lines</p>
  
  <pre><code>private LazyDataModel&lt;Ficha&gt; lazyListFichas;
  </code></pre>
  
  <p>And my init funcion I changed some parts to this </p>
  
  <pre><code>@PostConstruct
      public void init() {
          System.out.println("Inicializando fichas");
          tienePadres=false;
          fichaDM.setFicha(new Ficha());
          //obtenerFichas();
          //lazyListFichas = new FichaLazyList(fichaDM.getFichas);
          lazyListFichas = new FichaLazyList();
  
      }
  </code></pre>
  
  <p>My FichaLazyList is like this</p>
  
  <pre><code>import java.util.ArrayList;
  import java.util.Collections;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  
  import javax.ejb.EJB;
  import javax.faces.bean.ViewScoped;
  
  import org.primefaces.model.LazyDataModel;
  import org.primefaces.model.SortOrder;
  
  import ec.edu.puce.biologia.dao.FichaDao;
  import ec.edu.puce.biologia.util.LazySorter;
  
  
  @ViewScoped
  public class FichaLazyList extends LazyDataModel &lt;Ficha&gt; {
      private static final long serialVersionUID = 1L;
  
      private List&lt;Ficha&gt; fichas=new ArrayList&lt;Ficha&gt;();
  
      @EJB
      private FichaDao fichaDao;
  
      public FichaLazyList() {  
      }  
  
      public FichaLazyList(List&lt;Ficha&gt; fichas) {  
          this.fichas = fichas;  
      }  
  
      @Override  
      public Ficha getRowData(String rowKey) {  
          for(Ficha ficha : fichas) {  
              if(ficha.getIdFicha().equals(rowKey))  
                  return ficha;  
          }  
  
          return null;  
      }  
  
      @Override  
      public Object getRowKey(Ficha ficha) {  
          return ficha.getIdFicha(); 
      }  
  
      @Override  
      public List&lt;Ficha&gt; load(int first, int pageSize, String sortField, SortOrder sortOrder, Map&lt;String,String&gt; filters) {  
          List&lt;Ficha&gt; data = new ArrayList&lt;Ficha&gt;();  
  
        //filter 
          fichas = fichaDao.encontrarPagina(first, pageSize);
          if(fichas==null){
              System.out.println("Lista nula");
          }
          for(Ficha ficha : fichas) {  
              boolean match = true;  
  
              for(Iterator&lt;String&gt; it = filters.keySet().iterator(); it.hasNext();) {  
                  try {  
                      String filterProperty = it.next();  
                      String filterValue = filters.get(filterProperty);  
                      String fieldValue = String.valueOf(ficha.getClass().getField(filterProperty).get(ficha));  
  
                      if(filterValue == null || fieldValue.startsWith(filterValue)) {  
                          match = true;  
                      }  
                      else {  
                          match = false;  
                          break;  
                      }  
                  } catch(Exception e) {  
                      match = false;  
                  }   
              }  
  
              if(match) {  
                  data.add(ficha);  
              }  
          }
  
  
          long total = fichaDao.contar();
          System.out.println("xxx"+total);
  
          //sort  
          if(sortField != null) {  
              Collections.sort(data, new LazySorter(sortField, sortOrder));  
          }  
  
          //rowCount  
         // int dataSize = data.size();  
          this.setRowCount((int) total);  
  
          //paginate  
          if(total &gt; pageSize) {  
              try {  
                  return data.subList(first, first + pageSize);  
              }  
              catch(IndexOutOfBoundsException e) {  
                  return data.subList(first, first + ((int) total % pageSize));  
              }  
          }  
          else {  
              return data;  
          }  
      }
  
      public List&lt;Ficha&gt; getFichas() {
          return fichas;
      }
  
      public void setFichas(List&lt;Ficha&gt; fichas) {
          this.fichas = fichas;
      }
  
  
  }
  </code></pre>
  
  <p>I get this error, </p>
  
  <pre><code>ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/catalogoBiologia].[Faces Servlet]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException
      at ec.edu.puce.biologia.model.FichaLazyList.load(FichaLazyList.java:55) [classes:]
  </code></pre>
  
  <p>Line 55 is this </p>
  
  <pre><code>fichas = fichaDao.encontrarPagina(first, pageSize);
  </code></pre>
  
  <p>Should it be viewscope or session scope, What am I doing wrong when I try to inject the ejb</p>