0 Replies Latest reply on Mar 30, 2009 7:29 PM by devonbl

    reducing the number of calls that columns object makes

    devonbl

      I'm trying to optimize my extendeddatatable code to speed up the load time for my page. during my profiling i discovered that the method that i pass into the "value" attribute of the columns object, gets called for every reference i have to its alias "column" in my code. This ends up being 1018 times. I tried outjecting via seam the field that my getColumns method returns, but its just ended me into a slew of scope problems, so i'm wondering if anyone out there has any idea how to reduce that call.
      I've also tried using c:set, and a custom set taghandler, which makes the table not render at all.
      Here's my html:

      <ui:composition xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:c="http://java.sun.com/jstl/core"
       xmlns:service="http://connect.garmin.com/jsf/service"
       xmlns:a4j="http://richfaces.org/a4j"
       xmlns:rich="http://richfaces.org/rich"
       xmlns:s="http://jboss.com/products/seam/taglib"
       template="/api/activity-search/template/activitiesDefault.xhtml">
      
       <ui:define name="content">
       <h:form id="activitiesForm">
       <rich:extendedDataTable id="activitiesGrid" value="#{activitiesListingDataModel}" var="row"
       rows="20" style="height: 524px"
       cellpadding="5" rowClasses="activityRow, activityRowAlternate"
       onRowMouseOver="activitiesHandler.highlightRow(this)"
       onRowMouseOut="activitiesHandler.unHighlightRow(this)">
       <rich:columns id="#{column.fieldName}Column" value="#{activityListingDataProvider.columns}"
       var="column" style="text-align:#{column.alignment};" label="#{column.columnHeader}"
       rendered="#{column.fieldName != 'privacy'}">
       <f:facet name="header">
       <a4j:commandLink value="#{column.columnHeader}"
       styleClass="ascSort"
       reRender="activitiesGrid, counter"
       title="#{column.unitOfMeasurement}">
       <a4j:actionparam name="sortField" value="#{column.fieldName}" />
       <a4j:actionparam name="sortWasClicked" value="true" />
       </a4j:commandLink>
       </f:facet>
       <h:outputText value="#{row.cellMap.get(column.fieldName).displayValue}"/>
       </rich:columns>
       </rich:extendedDataTable>
       <div class="activitiesToolBar left">
       <a4j:commandButton id="setToEdit" value="refreshGrid"
       action="#{activityListingDataProvider.setIsInEdit()}"
       reRender="activitiesForm">
       </a4j:commandButton>
       </div>
       <rich:panel id="counter" styleClass="counterPanel" rendered="#{not activityListingDataProvider.isInEdit}">
       <div class="activitiesFooterLeft">
       <rich:datascroller id="pageScroller" for="activitiesGrid" reRender="counter"
       page="#{activityListingDataProvider.scrollerPage}"
       align="center" maxPages="10" tableStyleClass="paginationTableStyle"/>
       </div>
       </rich:panel>
       </h:form>
       </ui:define>
      </ui:composition>
      


      any help appreciated
      devon.lindsey@garmin.com