a4j:commandButton not reRendering rich:dataTable
sandman202 Jan 24, 2009 9:22 PMMy project was created using seam-gen. It uses Richfaces as well. My project is similar to the format used in Seam-in-Action examples.
With that said, here is my problem. I have InFilesEdit.xhtml which has an a4j:commandButton to validate some imported records. Within the InFilesEdit.xhtml is a dataTable showing the imported records. When I press the a4j:commandButton the action is performed, which is successful. Once the action is completed, I want the dataTable to be reRendered showing the updated status. However, it does not, unless I refresh my browser.
I am unable to get this to work properly. How can I get this to work?
InFilesEdit.xhtml
<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:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" template="/layout/template.xhtml"> <ui:define name="body"> <a4j:form id="inFilesForm" styleClass="edit" enctype="multipart/form-data"> <rich:panel> <f:facet name="header">#{inFilesHome.managed ? 'Edit' : 'Add'} InFiles</f:facet> <s:decorate id="nameDecoration" template="/layout/display.xhtml"> <ui:define name="label">Name</ui:define> <h:inputTextarea id="name" cols="80" rows="3" disabled="true" value="#{inFilesHome.instance.name}"/> </s:decorate> <s:decorate id="typeDecoration" template="/layout/edit.xhtml"> <ui:define name="label">Type</ui:define> <h:selectOneMenu id="inFilesType" styleClass="selectOneMenu" value="#{inFilesHome.instance.type}" disabled="true"> <s:selectItems value="#{inFilesHome.inFileTypes}" var="inFilesType" label="#{inFilesType.value}" noSelectionLabel=""/> <s:convertEnum /> </h:selectOneMenu> </s:decorate> <s:decorate id="statusDecoration" template="/layout/edit.xhtml"> <ui:define name="label">Status</ui:define> <h:selectOneMenu id="inFilesStatus" styleClass="selectOneMenu" value="#{inFilesHome.instance.status}" disabled="true"> <s:selectItems value="#{inFilesHome.inFileStatuses}" var="inFilesStatus" label="#{inFilesStatus.value}" noSelectionLabel=""/> <s:convertEnum /> </h:selectOneMenu> </s:decorate> <s:decorate id="createdOnDecoration" template="/layout/display.xhtml"> <ui:define name="label">Created On</ui:define> <rich:calendar id="createdOn" value="#{inFilesHome.instance.createdOn}" required="true" disabled="true" datePattern="MM/dd/yyyy" event="onblur" reRender="createdOnDecoration" style="width: auto;"> </rich:calendar> </s:decorate> <div style="clear:both"> <span class="required">*</span> required fields </div> </rich:panel> <div class="actionButtons"> <h:commandButton id="save" value="Save" action="#{inFilesHome.persist}" rendered="#{!inFilesHome.managed}"/> <h:commandButton id="delete" value="Delete" action="#{inFilesHome.remove}" immediate="true" rendered="#{inFilesHome.managed}"/> <s:button propagation="end" id="done" value="Done" view="/admin/InFiles.xhtml" rendered="#{inFilesHome.managed}"/> <s:button propagation="end" id="cancel" value="Cancel" view="/admin/#{empty inFilesFrom ? 'InFilesList' : inFilesFrom}.xhtml" rendered="#{!inFilesHome.managed}"/> <a4j:commandButton id="validate" value="Validate" action="#{inFilesHome.validate}" rendered="#{inFilesHome.managed}" disabled="#{!inFilesHome.readyForValidation}" ajaxSingle="false" reRender="out2" /> <a4j:commandButton id="refresh" value="Refresh" reRender="inFilesForm,out2"/> <h:commandButton id="post" value="Post" action="#{inFilesHome.post}" rendered="#{inFilesHome.managed}" disabled="#{!inFilesHome.readyForPosting}"/> </div> <a4j:outputPanel id="out2"> <rich:dataTable id="inCityStateZipList" var="_inCityStateZip" value="#{inCityStateZipList.resultList}"> <h:column> <f:facet name="header">Country</f:facet> #{_inCityStateZip.country} </h:column> <h:column> <f:facet name="header">City</f:facet> #{_inCityStateZip.city} </h:column> <h:column> <f:facet name="header">State</f:facet> #{_inCityStateZip.province} </h:column> <h:column> <f:facet name="header">Zipcode</f:facet> #{_inCityStateZip.zipcode} </h:column> <h:column> <f:facet name="header">County</f:facet> #{_inCityStateZip.county} </h:column> <h:column> <f:facet name="header">Status</f:facet> #{_inCityStateZip.status.value} </h:column> <h:column> <f:facet name="header">Action</f:facet> <s:link view="/admin/#{empty from ? 'InCityStateZip' : from}.xhtml" value="Select" id="inCityStateZip" propagation="none"> <f:param name="inCityStateZipFrom" value="#{inCityStateZipFrom}"/> <f:param name="inCityStateZipId" value="#{_inCityStateZip.id}"/> </s:link> </h:column> </rich:dataTable> <div class="tableControl"> <s:link view="/admin/#{inCityStateZipFrom}.xhtml" rendered="#{inCityStateZipList.previousExists}" value="#{messages.left}#{messages.left} First Page" id="inCityStateZipListFirstPage"> <f:param name="firstResult" value="0"/> </s:link> <s:link view="/admin/#{inCityStateZipFrom}.xhtml" rendered="#{inCityStateZipList.previousExists}" value="#{messages.left} Previous Page" id="inCityStateZipListPreviousPage"> <f:param name="firstResult" value="#{inCityStateZipList.previousFirstResult}"/> </s:link> <s:link view="/admin/#{inCityStateZipFrom}.xhtml" rendered="#{inCityStateZipList.nextExists}" value="Next Page #{messages.right}" id="inCityStateZipListNextPage"> <f:param name="firstResult" value="#{inCityStateZipList.nextFirstResult}"/> </s:link> <s:link view="/admin/#{inCityStateZipFrom}.xhtml" rendered="#{inCityStateZipList.nextExists}" value="Last Page #{messages.right}#{messages.right}" id="inCityStateZipListLastPage"> <f:param name="firstResult" value="#{inCityStateZipList.lastFirstResult}"/> </s:link> </div> </a4j:outputPanel> </a4j:form> </ui:define> </ui:composition>