5 Replies Latest reply on Dec 4, 2008 10:10 AM by Scott Stevenson

    Multiple <a4j:status> within a <a4j:region>

    Scott Stevenson Newbie

      MyFaces 1.1.5
      RichFaces 3.1.6

      I have a page which uses an <a4j:repeat> to render a dynamic number of "portlets" (they are not real portlets, only some static HTML pulled from other applications) when the page is loaded. It is not possible to use a <a4j:region> within <a4j:repeat> (see http://www.jboss.org/jbossajax4jsf/docs/devguide/en/html/BasicConceptsOfTheAjax4jsfFramework.html#SomeProblemsWithRendering ) so everything must go inside the same region.

      I have a requirement to show a loading indicator for each section however, as I only have one region I only get one indicator.

      Any idea how I would go about creating an indicator for each area that I am loading? My code is below. Thanks in advance.



      <f:verbatim>
       <script type="text/javascript" />
       var rowCount = 0;
       var loadPortalJS = "";
       </script>
      </f:verbatim>
      
      <a4j:log />
      <t:htmlTag value="BR" />
      <a4j:region>
       <a4j:repeat value="#{portalBean.portalList}" var="portal" rowKeyVar="row"
       ajaxKeys="#{portalBean.rowKeys}">
       <a4j:portlet>
       <a4j:jsFunction name="loadPortal#{row}" action="#{portalBean.actionLoadPortal}"
       reRender="portalData">
       <a4j:actionparam name="row" value="#{row}" />
       </a4j:jsFunction>
       <jsfsdc:section value="#{portal.title}">
       <jsfsdc:column>
       <a4j:status>
       <f:facet name="start">
       <jsfsdc:outputText value="Loading..." />
       </f:facet>
       <f:facet name="stop">
       <jsfsdc:outputText value=" " escape="false" />
       </f:facet>
       </a4j:status>
      
       </jsfsdc:column>
       <jsfsdc:column>
       <t:panelGroup id="portalData">
       <t:outputText value="#{portal.portalData}" escape="false" />
       </t:panelGroup>
       </jsfsdc:column>
       <jsfsdc:column>
       <t:div />
       </jsfsdc:column>
       <jsfsdc:column>
       <jsfsdc:selectOne value="#{portal.dropDownValue}" defaultValue="false">
       <f:selectItem itemLabel="5" itemValue="5" />
       <f:selectItem itemLabel="15" itemValue="15" />
       <f:selectItem itemLabel="25" itemValue="25" />
       <a4j:support event="onchange" action="#{portalBean.actionLoadPortal}" reRender="portalData" >
       <a4j:actionparam name="row" value="#{row}" />
       </a4j:support>
       </jsfsdc:selectOne>
       </jsfsdc:column>
       <jsfsdc:column>
       <t:div />
       </jsfsdc:column>
       <jsfsdc:column>
       <a4j:commandButton value="Refresh" action="#{portalBean.actionLoadPortal}"
       reRender="portalData">
       <a4j:actionparam name="row" value="#{row}" />
       </a4j:commandButton>
       </jsfsdc:column>
       </jsfsdc:section>
       <t:htmlTag value="BR" />
       <t:htmlTag value="BR" />
       <f:verbatim>
       <script type="text/javascript" />
       loadPortalJS = loadPortalJS+'loadPortal' + rowCount++ +'();';
       </script>
       </f:verbatim>
       </a4j:portlet>
       </a4j:repeat>
      </a4j:region>
      <rich:jQuery selector="document" timing="onload" query="each(function () {eval(loadPortalJS);});"/>