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
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user
