how can i dynamically change lazydatamodel in managed bean

UI Components for JSF
Post Reply
obinna
Posts: 48
Joined: 14 Jan 2011, 12:44

12 Feb 2011, 14:35

hi, i have a p:datatable which loads a huge dataset. i want it this way, when the page loads, it should not load anything. but when u "search" or click "show all", it should display the relevant data. this is what i have done so far, but it throws java.lang.ArithmeticException: / by zero, when i click the "show all" button.

here is the datatable and show all button

Code: Select all

<p:dataTable var="corpmember" value="#{mobilizedMBean.lazyModel}" id="mobilizedtable"
                             paginator="true" rows="50" lazy="true"
                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                             rowsPerPageTemplate="100,150,200,350,500">
.....

<p:confirmDialog message="This action may take some time.
                                 Alternatively, you can search for the records you want.
                                 Do you wish to continue?"
                                 showEffect="bounce" hideEffect="explode"
                                 header="Confirm" severity="alert" widgetVar="showAllConfirmation">

                    <p:commandButton value="Yes Sure" oncomplete="showAllConfirmation.hide()" immediate="true"
                                     update="mobilizedtable" actionListener="#{mobilizedMBean.showAllMobilized}" />
                    <p:commandButton value="Not Yet" onclick="showAllConfirmation.hide()" type="button"
                                     />

                </p:confirmDialog>
 
and here is the managed bean code

Code: Select all

public class MobilizedMBean implements Serializable {

    @EJB
    private MobilizedEJBLocal mobilizedEJB;
    private LazyDataModel<DatamainMstDTO> lazyModel;    
    
    private Integer displayCount;
    private boolean querySet;
    private String currentCountQuery="select count(o) from DatamainMst o where o.callupNo='yyy'"; //returns 0 for first page load
    private String currentSelectQuery="select o from DatamainMst o where o.callupNo='yyy'"; //returns no data for first page load
        
    /** Creates a new instance of MobilizedBean */
    public MobilizedMBean() {
        querySet = false;
    }

    private void populateLazyDatamain(List<DatamainMstDTO> list, int first, int pageSize) {
        displayCount = mobilizedEJB.countAll(currentCountQuery);
        lazyModel.setRowCount(displayCount);
        List<DatamainMstDTO> list2 = mobilizedEJB.findAll(currentSelectQuery, first, pageSize);
        for (DatamainMstDTO d : list2) {
            list.add(d);
        }
    }

    public LazyDataModel<DatamainMstDTO> getLazyModel() {        
        if (lazyModel == null) {
            lazyModel = new LazyDataModel<DatamainMstDTO>() {

                @Override
                public List<DatamainMstDTO> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String, String> filters) {

                    List<DatamainMstDTO> mobilizedMembers = new ArrayList<DatamainMstDTO>();
                    //mobilizedMembers = mobilizedEJB.findAll(srchCallUp, srchSurname, srchOthernames, srchInstitute, srchCourseCode,first,pageSize);
                    populateLazyDatamain(mobilizedMembers, first, pageSize);

                    Integer dd = mobilizedEJB.countAll(currentCountQuery);
                    this.setRowCount(dd.intValue());

                    return mobilizedMembers;
                }
            };

            Integer dd = mobilizedEJB.countAll(currentCountQuery);
            lazyModel.setRowCount(dd.intValue());
        } 
        return lazyModel;
    }

    public String getCurrentCountQuery() {
        return currentCountQuery;
    }

    public void setCurrentCountQuery(String currentCountQuery) {
        this.currentCountQuery = currentCountQuery;
    }

    public String getCurrentSelectQuery() {
        return currentSelectQuery;
    }

    public void setCurrentSelectQuery(String currentSelectQuery) {
        this.currentSelectQuery = currentSelectQuery;
    }

    public Integer getDisplayCount() {
        return displayCount;
    }

    public void setDisplayCount(Integer displayCount) {
        this.displayCount = displayCount;
    }

    public boolean isQuerySet() {
        return querySet;
    }

    public void setQuerySet(boolean querySet) {
        this.querySet = querySet;
    }

    public void showAllMobilized(ActionEvent event) {

        lazyModel = null;
        currentCountQuery = "select count(o) from DatamainMst o";
        currentSelectQuery = "select  new com.nysc.dtos.DatamainMstDTO(o.gradMonth, o.gradYear, o.institutionCodeMst.code, "
                + "o.institutionCodeMst.name, o.callupNo, o.matricNo, o.surname, o.otherNames, o.sex, o.maritalStatus, "
                + "o.stateCodeMst.code, o.stateCodeMst.name, o.dayOfBirth, o.monthOfBirth, o.yearOfBirth, o.courseCodeMst.code, "
                + "o.courseCodeMst.name, o.operatorCode)  from DatamainMst o";

        
    }
}

here is the exception i get

Code: Select all

SEVERE: Error Rendering View[/ui/admin/mobilized.xhtml]
java.lang.ArithmeticException: / by zero
        at org.primefaces.model.LazyDataModel.setRowIndex(LazyDataModel.java:62)
        at javax.faces.component.UIData.setRowIndex(UIData.java:448)
        at javax.faces.component.UIData.visitTree(UIData.java:1184)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at javax.faces.component.UIForm.visitTree(UIForm.java:324)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:368)
        at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:289)
        at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:179)
        at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:989)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
        at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:369)
        at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:619)

SEVERE: java.lang.ArithmeticException: / by zero
        at org.primefaces.model.LazyDataModel.setRowIndex(LazyDataModel.java:62)
        at javax.faces.component.UIData.setRowIndex(UIData.java:448)
        at javax.faces.component.UIData.visitTree(UIData.java:1184)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at javax.faces.component.UIForm.visitTree(UIForm.java:324)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:368)
        at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:289)
        at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:179)
        at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:989)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
        at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:369)
        at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:619)
what can i do about this?

smithh032772
Posts: 6144
Joined: 10 Sep 2011, 21:10

02 Dec 2011, 06:51

For others experiencing this error, I just provided a fix/workaround. See/click URL below and see my comment added:

http://code.google.com/p/primefaces/iss ... il?id=1544
Howard

PrimeFaces 6.0, Extensions 6.0.0, Push (Atmosphere 2.4.0)
TomEE+ 1.7.4 (Tomcat 7.0.68), MyFaces Core 2.2.9, JDK8
JUEL 2.2.7 | OmniFaces | EclipseLink-JPA/Derby | Chrome

Java EE 6 Tutorial|NetBeans|Google|Stackoverflow|PrimeFaces|Apache

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 36 guests