Hi,
I get a problem when I try to rerender the rich:DataScroller and the rich:DataTAble. The DataScroller component only rerenders in the second request.
The code below is a simplification of my problem. (only relevant code)
JSP code
<h:form id="myTestForm"> <h:inputText value="#{test.searchContent}" /> <br /> <h:commandButton value="Search" action="#{test.search}"> <a4j:support event="onclick" reRender="myRichDataTable1,myDataScroller1" /> </h:commandButton> <br /> <a4j:outputPanel ajaxRendered="true" id="myAjaxOutputPanel1"> <rich:datascroller ajaxSingle="false" id="myDataScroller1" for="myRichDataTable1" immediate="true" /> <rich:dataTable rows="10" id="myRichDataTable1" var="myLocalList" value="#{test.listNames}"> <f:facet name="header"> <rich:columnGroup id="candidateLocalColumnGroup1"> <rich:column> <h:outputText value="Name" /> </rich:column> </rich:columnGroup> </f:facet> <rich:column> <h:outputText value="#{myLocalList.name}" /> </rich:column> </rich:dataTable> </a4j:outputPanel> </h:form>
public List getListNames() { Collection myTestList = new ArrayList(); if (searchContent != null) { if ( searchContent.equals( "a" ) ) { for ( int i = 0; i < 5; i++ ) { TestDTO testDTO = new TestDTO(); testDTO.setName( "a" + i ); myTestList.add( testDTO ); } } else if ( searchContent.equals( "b" ) ) { for ( int i = 0; i < 15; i++ ) { TestDTO testDTO = new TestDTO(); testDTO.setName( "b" + i ); myTestList.add( testDTO ); } } else if ( searchContent.equals( "c" ) ) { for ( int i = 0; i < 25; i++ ) { TestDTO testDTO = new TestDTO(); testDTO.setName( "c" + i ); myTestList.add( testDTO ); } } else { myTestList = null; } } return (List) myTestList; } public String search() { //some validations getListNames(); //workarround to set DataTable page = 1 return null; }