Multiple <a4j:status> within a <a4j:region>
scottstevenson Dec 2, 2008 5:03 AMMyFaces 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);});"/>