Pages

Wednesday, June 4, 2014

ADF Dynamic Table with Java List

To Create a Dynamic table from a Java Collections like Array list and Hash maps.  The simple way is we need to create the table data based on the collection modal.

Create a simple bean that will return the students list wrapped in the collection model.
    public void generateCollectionModel(){
        this.model = new SortableModel(addRowsToCollectionModel(columnNames));
    }
    public List<Map> addRowsToCollectionModel(List<String> columnNames){
        List<Map> rows= new ArrayList<Map>();
        for (StudentClass studentData:studentList) {
            Map newRow = new HashMap();
            newRow.put("Id", studentData.getId());
            newRow.put("Name", studentData.getName());
            newRow.put("Grade", studentData.getGrade());
            newRow.put("Address", studentData.getAddress());
            newRow.put("Rank", studentData.getRank());
            rows.add(newRow);
        }
        return rows;
    }

And created a simple page with adf table and column iterator.

             <af:table varStatus="rowStat" summary="table"
                        value="#{pageFlowScope.DynamicTable.collectionModel}"
                        rows="#{pageFlowScope.DynamicTable.collectionModel.rowCount}"
                        rowSelection="none" contentDelivery="immediate"
                        var="row" rendered="true" id="t1">
                <af:forEach items="#{pageFlowScope.DynamicTable.columnNames}"
                            var="name">
                  <af:column sortable="true" sortProperty="#{name}"
                             rowHeader="unstyled" headerText="#{name}"
                             inlineStyle="width:100px;" id="c1">
                    <af:activeOutputText value="#{row[name]}" id="aot1"/>
                  </af:column>
                </af:forEach>
              </af:table>

The column iterator will be based on the number of columns of table.

Sample Code

0 comments:

Post a Comment