1

私は実際に以下のリンクに従って列と行のデータを動的に追加しましたが、xhtml に表示する方法について少し混乱しました。どんな助けでも

http://balusc.blogspot.com/2006/06/using-datatables.html#PopulateDynamicDatatable

List<String> strlist = new ArrayList<String>();
        List<List<String>> dynamicListynamicList = new ArrayList<List<String>>();
        strlist.add("Name");
        strlist.add("SSN");
         for(String columnName : columnNamesList){
             strlist.add(columnName);
    }

         List<String> rowData = new ArrayList<String>();
         for(String otherList : listData){
             try {
                 rowData.add(otherList.getName());
                 rowData.add(otherList.getId());
                    if(otherList.getAmount() != null){
                         for(BigDecimal amount : otherList.getAmount()){
                             if(amount != null){
                                 rowData.add(amount.toString());
                             }else{
                                 rowData.add("");
                             }
                         }
                    }else{
                        for(String s : strlist){
                             rowData.add("");
                        }
                    }

                 } catch (Exception e) {
                    // TODO: handle exception
                     e.printStackTrace();
                }
                 dynamicListynamicList.add(Arrays.asList(rowData.toArray(new String[rowData.size()] )));
            }

        String[] strarray = new String[strlist.size()];
        dynamicHeaders =   strlist.toArray(strarray );
        populateDynamicDataTable(dynamicListynamicList);

        private void populateDynamicDataTable(List<List<String>> dynamicList2){
             HtmlDataTable dynamicDataTable = new HtmlDataTable();
             for (int i = 0; i < dynamicList2.get(0).size(); i++) {
                 HtmlColumn column = new HtmlColumn();
                 dynamicDataTable.getChildren().add(column);
                 HtmlOutputText header = new HtmlOutputText();
                    header.setValue(createValueExpression("#{dynamicItemColumn[" + dynamicHeaders[i] + "]}", String.class));
                    column.setHeader(header);
                    HtmlOutputText output = new HtmlOutputText();
                    output.setValueExpression("value",
                        createValueExpression("#{dynamicItem[" + i + "]}", String.class));
                    column.getChildren().add(output);
             }

             dynamicDataTableGroup = new HtmlPanelGroup();
             dynamicDataTableGroup.getChildren().add(dynamicDataTable);
             setDynamicList(dynamicList2);

データが追加されるとすべてが正常に機能しますが、関連する列と行データを表示するためにjsfページ(xhtml)で反復する方法がわかりませんでした..

4

0 に答える 0