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

    reducing the number of calls that columns object makes

    devon lindsey Newbie

      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