This may be a EntityManager flush issue but not sure... I have the following xhtml for a Seam2.0.0.GA web app backed by 2 SFSB's (one conversation scoped and the other session scoped). The problem is when user clicks 'yes' for any radio button in any row of the form/dataTable, an update transaction is persisted to the database for that row/column. The update should only happen when user clicks submit in one of the rich:modalPanel forms.
I've ran this test case thru the debugger several times and the submit method is not being called. I'm thinking the EntityManager/PersistenceContext is being automatically flushed somehow but not sure if or when this is happening. I did remove the a4j:support tag for one of the columns and moved the js function call to onclick event handler. The table did not get updated like before. So somehow the a4j:support is causing this to happen I think... Any hints? thx. <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="#{securityAuditAction.processGraphicImage(myRow[1].auditProgress)}"/> | </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">Adjustment Limit</f:facet> | | <h:outputText value="#{myRow[0].id.employeeNumber}"/> | </h:column> | | | <h:column> | <f:facet name="header">Account Approved?</f:facet> | | <h:panelGrid columns="2"> | <h:selectOneRadio id="accountApprovedRB" value="#{myRow[1].icomsAccountApproved}"> | | <a4j:support event="onclick" | oncomplete="processNote(#{myAuditList.getRowIndex()}, 'accountApproved')" | action="#{noteAction.setCurrentData(myAuditList.getRowIndex(), 'accountApproved', myAuditList)}" | ajaxSingle="true" | reRender="mainForm"/> | | <f:selectItems value="#{securityAuditAction.securityAuditRadioButtons}" /> | </h:selectOneRadio> | | <h:graphicImage id="acctGraphic" value="/img/icon_edit.gif" | rendered="#{noteAction.getRenderNoteGraphic(myAuditList.getRowIndex(), 'accountApproved') || | securityAuditAction.getLoadedNote(myAuditList.getRowIndex(), 'accountApproved')}"> | <a4j:support event="onclick" | onclick="editNote(#{myAuditList.getRowIndex()}, 'accountApproved')" | actionListener="#{noteAction.setCurrentData(myAuditList.getRowIndex(), 'accountApproved', myAuditList)}"/> | </h:graphicImage> | </h:panelGrid> | </h:column> | | | <h:column> | <f:facet name="header">Security Level Approved?</f:facet> | | <h:panelGrid columns="2"> | <h:selectOneRadio id="securityLevelApprovedRB" value="#{myRow[1].securityLevelApproved}" | rendered="#{noteAction.getRenderRadioButtons(myAuditList.getRowIndex())}"> | <a4j:support event="onclick" | oncomplete="processNote(#{myAuditList.getRowIndex()}, 'secLevelApproved')" | action="#{noteAction.setCurrentData(myAuditList.getRowIndex(), 'secLevelApproved', myAuditList)}"/> | <f:selectItems value="#{securityAuditAction.securityAuditRadioButtons}" /> | </h:selectOneRadio> | <h:graphicImage id="securityLevelGraphic" value="/img/icon_edit.gif" | rendered="#{noteAction.getRenderNoteGraphic(myAuditList.getRowIndex(), 'secLevelApproved') || | securityAuditAction.getLoadedNote(myAuditList.getRowIndex(), 'secLevelApproved')}"> | <a4j:support event="onclick" | onclick="editNote(#{myAuditList.getRowIndex()}, 'secLevelApproved')" | action="#{noteAction.setCurrentData(myAuditList.getRowIndex(), 'secLevelApproved', myAuditList)}" | reRender="out3" | /> | </h:graphicImage> | </h:panelGrid> | </h:column> | | | <h:column> | <f:facet name="header">Adjustment Limit Approved?</f:facet> | | <!-- <h:panelGrid columns="2"> --> | <h:panelGrid columns="3"> | <h:selectOneRadio id="adjustmentLimitApprovedRB" value="#{myRow[1].adjustmentLimitApproved}" | rendered="#{noteAction.getRenderRadioButtons(myAuditList.getRowIndex())}"> | <a4j:support event="onclick" | oncomplete="processNote(#{myAuditList.getRowIndex()}, 'adjLimitApproved')" | action="#{noteAction.setCurrentData(myAuditList.getRowIndex(), 'adjLimitApproved', myAuditList)}"/> | <f:selectItems value="#{securityAuditAction.securityAuditRadioButtons}" /> | </h:selectOneRadio> | <h:graphicImage id="adjLimitGraphic" value="/img/icon_edit.gif" | rendered="#{noteAction.getRenderNoteGraphic(myAuditList.getRowIndex(), 'adjLimitApproved') || | securityAuditAction.getLoadedNote(myAuditList.getRowIndex(), 'adjLimitApproved')}"> | <a4j:support event="onclick" | oncomplete="editNote(#{myAuditList.getRowIndex()}, 'adjLimitApproved')" | actionListener="#{noteAction.setCurrentData(myAuditList.getRowIndex(), 'adjLimitApproved', myAuditList)}" | reRender="mpNoteAndEmployeeSubmit"/> | </h:graphicImage> | <h:commandButton id="submitEmployee" value="Submit" actionListener="#{securityAuditAction.submit}" style="visibility:hidden"/> | </h:panelGrid> | </h:column> | | </h:dataTable> | | </h:form> View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4113870#4113870 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4113870 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user