1 Reply Latest reply on Jul 30, 2009 3:29 AM by ilya_shaikovsky

    Too many calls to walk() of ExtendedDataModel

    zjda

      Hi, I have a <rich:extendedDataTable> in a panel to display search results.The table uses ExtendedDataModel as the backbean. The panel is refreshed only if a menu command is clicked. However, I found that the methods walk() and getRowCount() are called whenever any portion of the page is submitted by ajax. To make sure that panel is not rendered, I added <h:outputText value="#{resultTable.test}" /> to the panel, and I found that getTest() is not called.

       <h:form style="margin:0px; padding:0px; border:5px;">
       <h:outputText value="#{resultTable.test}" />
       <a4j:queue requestDelay="10" />
       <rich:datascroller id="datascroller" for="resultTable" page="#{resultTable.scrollerPage}"/>
       <rich:extendedDataTable value="#{resultTable}" var="row" rows="3" id="resultTable"
       width="100%" height="425px" selection="#{resultTable.selection}">
       <a4j:support event="onselectionchange" />
       <rich:columns value="#{resultTable.propertyNames}" var="propName" >
       <f:facet name="header">
       <h:outputText value="#{propName}" />
       </f:facet>
       <h:outputText value="#{row.map[propName]}" />
       </rich:columns>
       </rich:extendedDataTable>
       </h:form>
      


      What makes thing worse is that both walk() and getRowCount() have to query the database to get the data. Therefore, these calls to the methods will be a big performance problem.

      Any help will be appreciated.
      -ZJ