Question

Versions :

Aapche MyFaces 2.1.14 RichFaces 4.3.5

Code :

<rich:dataTable var="row" value="#{bean.rowData}"  index="dataIndex">

        <rich:columns value="#{bean.columnData}" var="column" index="ind" sortBy="#{row[column.id].sort}" sortOrder="#{bean.sortOrder[column.id]}">
            <f:facet name="header">
                <h:outputText value="#{column.header}" />
            </f:facet>          
        #{row.value}
        </rich:columns>                 
</rich:dataTable>

Issue :

We are migrating from JSF 1.2 to JSF 2. As shown in below code snippet , we were using <rich:columns> to dynamically generate columns and to add sort feature for the columns. Since <rich:columns> is now removed , we need to use <c:forEach> to generate dynamic columns as per Dynamic columns with richfaces 4

But the issue remains is how to add sort behaviour for the columns.

Is there any alternative available ?

Please help.

EDIT 1 :

I am able to get the desired behaviour by below code , as stated in the comments for the question.

<rich:extendedDataTable id="masterTable" var="row" value="#{bean.rowData}"  index="dataIndex" render="masterTable">       
    <c:forEach items="#{bean.columnData}" var="column">                     
        <rich:column sortBy="#{row[column.id].sort}" sortOrder="#{bean.sortOrder[column.id]}"> 
                    <f:facet name="header">
                        <h:outputText value="#{column.header}" />
                    </f:facet>          
                    #{row.value}
            </rich:column>
    </c:forEach>               
</rich:extendedDataTable>

The reason for using <rich:extendedDataTable> is , it allows built-in sorting with arrows (for sorting order displaying). The above set up is working. The issue is now , after I click on column header for sorting ,ajax reRendering doesn't seem to work. It requires manual page refresh and then sorted data is shown on the page. I have observed same issue earlier at other place with <c:forEach> . When I removed <c:forEach> with <rich:dataGrid> , it worked. But in this case as per post Dynamic columns with richfaces 4, I have to stick with <c:forEach>

EDI 2 : The ajax rendering issue is observed when sorting is applied to another column than present one . After page is refreshed , sorting for that particular column works fine until another column is applied for sort.

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top