a4j:support to reRender dataTable and Factory question
asookazian Nov 13, 2007 7:40 PMso I'm using the Factory component pattern on a conversation scoped SFSB. I added a a4j:support tag to a h:selectOneRadio tag and the h:form is reRendered when user clicks 'no' on one of the radioButtons.
So my question is: does the Factory method execute again when the dataTable is reRendered? It seems it's not refiring based on log output in the server.log. I don't actually want it to, but just curious...
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
xmlns:c="http://java.sun.com/jstl/core"
template="layout/template.xhtml">
<ui:define name="body">
<script type="text/javascript"
src="seam/resource/remoting/resource/remote.js">
</script>
<script type="text/javascript"
src="seam/resource/remoting/interface.js?noteAction">
</script>
<script type="text/javascript"
src="seam/resource/remoting/interface.js?securityAuditAction">
</script>
<script type="text/javascript"
src="js/securityAudit.js">
</script>
<h:messages globalOnly="true" styleClass="message"/>
<rich:modalPanel id="mp" minHeight="200" minWidth="450"
height="500" width="500" zindex="2000">
<f:facet name="header">
<a4j:form id="a4jHeaderForm">
<h:outputText id="headerText" value=""/>
</a4j:form>
</f:facet>
<a4j:form id="a4jMainForm">
<h:panelGrid columns="2" style="vertical-align:middle">
<h:outputText id="description" value=""/>
<BR/>
<h:inputTextarea id="noteText" value="#{noteAction.noteText}" rows="6" cols="50"/>
<!-- hidden variables are null/empty in NoteAction submit method, using Seam remoting -->
<h:inputHidden id="rowIndex" value="noteAction.rowIndex"/>
<h:inputHidden id="colName" value="noteAction.colName"/>
<!--
<h:inputHidden id="siteId" value="noteAction.siteId"/>
<h:inputHidden id="employeeNumber" value="noteAction.employeeNumber"/>
-->
<a4j:commandButton value="submit" action="#{noteAction.submit}" onclick="showNoteGraphic();Richfaces.hideModalPanel('mp')"/>
<BR/>
<a4j:commandButton value="cancel" onclick="Richfaces.hideModalPanel('mp');unselectCurrentRadioButton();checkForSubmitFromModalPanel()"/>
</h:panelGrid>
</a4j:form>
</rich:modalPanel>
<!--
<rich:panel>
<a4j:form>
<h:panelGrid columns="2">
<h:inputText value="#{noteAction.networkId}"/>
<a4j:commandButton value="Submit" align="top"/>
<a4j:status>
<f:facet name="start">
<h:graphicImage value="/img/spinner.gif"/>
</f:facet>
</a4j:status>
</h:panelGrid>
</a4j:form>
</rich:panel>
-->
<rich:panel>
<h:form id="mainForm">
<h:outputText value="No Direct Reports" rendered="#{myAuditList != null and myAuditList.rowCount==0}"/>
<h:dataTable id="dataTable1" value="#{myAuditList}" var="myRow" rendered="#{myAuditList != null and myAuditList.rowCount > 0}"
styleClass="dataTable" rowClasses="oddRow, evenRow" frame="hsides">
<h:column>
<f:facet name="header">Status</f:facet>
<h:graphicImage id="statusImage" value="/img/red.gif"/>
</h:column>
<h:column>
<f:facet name="header">Employee Name</f:facet>
<!-- siteId and employeeNumber hidden fields are used for all radio buttons -->
<h:outputText id="employeeName" value="#{myRow[0].id.employeeName}"/>
<h:inputHidden id="employeeNameHidden" value="#{myRow[0].id.employeeName}"/>
<h:inputHidden id="siteId" value="#{myRow[0].id.siteId}"/>
<h:inputHidden id="employeeNumber" value="#{myRow[0].id.employeeNumber}"/>
</h:column>
<h:column>
<f:facet name="header">SiteId</f:facet>
<h:outputText value="#{myRow[0].id.siteId}"/>
</h:column>
<h:column>
<f:facet name="header">EmployeeNumber</f:facet>
<h:outputText value="#{myRow[0].id.employeeNumber}"/>
</h:column>
<h:column>
<f:facet name="header">Account Approved?</f:facet>
<h:selectOneRadio id="accountApprovedRB" value="#{myRow[1].icomsAccountApproved}">
<a4j:support event="onclick"
oncomplete="showHideRadioButtons(#{myAuditList.getRowIndex()}); processNote(#{myAuditList.getRowIndex()}, 'accountApproved'); checkForSubmit(#{myAuditList.getRowIndex()})"
action="#{noteAction.setRenderRadioButtons(myAuditList.getRowIndex(), myRow[1].icomsAccountApproved)}"
reRender="mainForm"
ajaxSingle="true"/>
<f:selectItems value="#{securityAuditAction.securityAuditRadioButtons}" />
</h:selectOneRadio>
<h:graphicImage id="acctGraphic" value="/img/icon_edit.gif"
onclick="editNote(this, #{myAuditList.getRowIndex()}, 'accountApproved');" style="visibility:hidden"/>
</h:column>
<h:column>
<f:facet name="header">Security Level Approved?</f:facet>
<h:selectOneRadio id="securityLevelApprovedRB" value="#{myRow[1].securityLevelApproved}"
onclick="processNote(#{myAuditList.getRowIndex()}, 'secLevelApproved');checkForSubmit(#{myAuditList.getRowIndex()})"
rendered="#{noteAction.getRenderRadioButtons(myAuditList.getRowIndex())}">
<f:selectItems value="#{securityAuditAction.securityAuditRadioButtons}" />
</h:selectOneRadio>
<h:graphicImage id="securityLevelGraphic" value="/img/icon_edit.gif"
onclick="editNote(this, #{myAuditList.getRowIndex()}, 'secLevelApproved');" style="visibility:hidden"/>
</h:column>
<h:column>
<f:facet name="header">Adjustment Limit Approved?</f:facet>
<h:selectOneRadio id="adjustmentLimitApprovedRB" value="#{myRow[1].adjustmentLimitApproved}"
onclick="processNote(#{myAuditList.getRowIndex()}, 'adjLimitApproved');checkForSubmit(#{myAuditList.getRowIndex()})"
rendered="#{noteAction.getRenderRadioButtons(myAuditList.getRowIndex())}">
<f:selectItems value="#{securityAuditAction.securityAuditRadioButtons}" />
</h:selectOneRadio>
<h:graphicImage id="adjLimitGraphic" value="/img/icon_edit.gif"
onclick="editNote(this, #{myAuditList.getRowIndex()}, 'adjLimitApproved');" style="visibility:hidden"/>
</h:column>
<h:column>
<h:commandButton id="submitEmployee" value="Submit" action="#{securityAuditAction.submit}" style="visibility:hidden"/>
<!-- <f:param name="securityAuditRowNum" value="#{myAuditList.getRowIndex()}"/> -->
<h:inputHidden id="securityAuditRowNum" value="#{myAuditList.getRowIndex()}"/>
</h:column>
</h:dataTable>
</h:form>
</rich:panel>
</ui:define>
</ui:composition>