2012-12-19 38 views
8

मैंने डेटाटेबल के लिए LazyLoading लागू किया है। जब मैं पेजिनेशन का उपयोग करके डेटाटेबल के माध्यम से चलाता हूं तो मुझे निम्नलिखित अपवाद मिल रहे हैं।प्राइमफ़ेस अपवाद जानकारी: java.lang.ArithmeticException:/शून्य java.lang.ArithmeticException:/शून्य से

com.sun.faces.context.PartialViewContextImpl processPartial 
INFO: java.lang.ArithmeticException:/by zero 
java.lang.ArithmeticException:/by zero 
    at org.primefaces.model.LazyDataModel.setRowIndex(LazyDataModel.java:62) 
    at org.primefaces.component.api.UIData.setRowModel(UIData.java:411) 
    at org.primefaces.component.api.UIData.setRowIndex(UIData.java:403) 

ManagedBean

@PostConstruct 
    public LazyDataModel<Request> getLazyModel() { 
      if (lazyModel == null) { 
      lazyModel = new LazyDataModel<Request>() { 

      @Override 
      public List<Request> load(int startingAt, int maxPerPage, String sortField, 
         SortOrder sortOrder, Map<String, String> filters) { 
      return getRequestService().getRequest(startingAt, maxPerPage, sortField, sortOrder, filters); 
      } 
      }; 
      lazyModel.setRowCount(getRequestService().getRequestCount());   

      } 
      return lazyModel; 
     } 

JSF

<h:form> 
     <p:dataTable id="dataTable" var="req" lazy="true" value="#{reqMB.lazyModel}" 
      paginator="true" rows="10" 
      paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
      rowsPerPageTemplate="5,10,15"> 

पंक्ति संख्या प्राप्त करने के लिए डीएओ।

int count = ((Long)sessionFactory.getCurrentSession().createQuery 
("select count(*) from Request").uniqueResult()).intValue(); 

अद्यतन 1

com.sun.faces.context.PartialViewContextImpl processPartial 
INFO: java.lang.ArithmeticException:/by zero 
java.lang.ArithmeticException:/by zero 
    at org.primefaces.model.LazyDataModel.setRowIndex(LazyDataModel.java:62) 
    at org.primefaces.component.api.UIData.setRowModel(UIData.java:411) 
    at org.primefaces.component.api.UIData.setRowIndex(UIData.java:403) 
    at org.primefaces.component.api.UIData.processChildren(UIData.java:291) 
    at org.primefaces.component.api.UIData.processPhase(UIData.java:263) 
    at org.primefaces.component.api.UIData.processDecodes(UIData.java:229) 
    at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506) 
    at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) 
    at org.primefaces.component.api.UIData.visitTree(UIData.java:641) 
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601) 
    at javax.faces.component.UIForm.visitTree(UIForm.java:344) 
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601) 
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601) 
    at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376) 
    at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252) 
    at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183) 
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931) 
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) 
+0

आप 'maxPerPage' में किसी भी शून्य संयोग से है ठीक करना चाहिए अनुसार? – AlexZam

+0

@AlexZam 'maxPerPage' हमेशा 5 या 10 होता है जब मैं परीक्षण करता हूं जो डिफ़ॉल्ट रूप से डेटाटेबल ड्रॉप डाउन में होता है। मैंने कभी नहीं बदला – user75ponic

+0

यह समस्या बताती है कि आपकी '' में पंक्तियां = "0" 'है। क्या आप कोड चला रहे हैं जो आपको लगता है कि आप चल रहे हैं? शायद आपके पास 'पंक्तियां = "# {bean.rows}" 'है जो पोस्टबैक पर' 0' लौटा दी है? – BalusC

उत्तर

9

#23 in the issue tracker of primefaces टिप्पणी करने के लिए निम्नलिखित है कि समस्या

@Override 
public void setRowIndex(int rowIndex) { 
    /* 
    * The following is in ancestor (LazyDataModel): 
    * this.rowIndex = rowIndex == -1 ? rowIndex : (rowIndex % pageSize); 
    */ 
    if (rowIndex == -1 || getPageSize() == 0) { 
     super.setRowIndex(-1); 
    } 
    else 
     super.setRowIndex(rowIndex % getPageSize()); 
} 
+0

इसके लिए धन्यवाद। ध्यान दिया है कि जब दायरा दिखाई देता है तो यह समस्या प्रकट नहीं होती है। – user75ponic

+0

दायरे के अनुरोध के साथ काम करता है! धन्यवाद!!! – Ascension