0

Richfaces3.3.Finalを使用してjsf1.2レガシープロジェクトを動作させようとしています。

動的列を使用してデータテーブルを作成しようとしていますが、エラーが発生します:

Caused by: javax.el.PropertyNotFoundException: /index.xhtml @44,58 value="#{results[ind].columnName}": Property '0' not found on type ..../TableBean

私は基本的にこのページの例に従っています-http://livedemo.exadel.com/richfaces-demo/richfaces/columns.jsf?tab=usage&cid= 278645が、バッキングBeanコードは表示されません。

これが私の関連コードです

<rich:dataTable id="resultsTable" value="#{tableBacking.results}" var="results">
    <f:facet name="header">
        <h:outputText value="Results" />
    </f:facet>
    <rich:column>
        <f:facet name="header">
            <h:outputText value="First Columns" />
        </f:facet>
    </rich:column>
    <rich:columns value="#{tableBacking.columns}" var="columns" index="ind" id="column#{ind}">
        <f:facet name="header">
            <h:outputText value="#{columns.header}" />
        </f:facet>

        <h:outputText value="#{results[ind].columnName}" />

    </rich:columns>
 </rich:dataTable>

バッキングビーン

public class TableLookupBacking {

    private List<ColumnModel> columns = null;
    private List<TableBean> results = null;

        public List<ColumnModel> getColumns() {

        if(columns == null) {
            columns = new ArrayList<ColumnModel>();
            columns.add(new ColumnModel("header", "Property"));
            columns.add(new ColumnModel("header2", "Property"));
            columns.add(new ColumnModel("header3", "Property"));
            System.out.println("columns.size = "+columns.size());
        }
        return columns;
    }

        public List<TableBean> getResults() {

        if(results == null) {
            results = new ArrayList<TableBean>();
            results.add(new TableBean("id"));
            results.add(new TableBean("name"));
            System.out.println("results.size = "+results.size());
            System.out.println("results.0 = "+results.get(0).getColumnName());
        }
        return results;
    }

        public void setResults(ArrayList<TableBean> results) {
        this.results = results;
    }
        public void setColumns(ArrayList<ColumnModel> columns) {
        this.columns = columns;
    }
}

TableBean

public class TableBean {

    private String columnName;

    public TableBean(String columnName) {
        this.columnName = columnName;
    }
    public String getColumnName() {
        return columnName;
    }
    public void setColumnName(String columnName) {
        this.columnName = columnName;
    }
}
4

2 に答える 2

0

行を変更します

<h:outputText value="#{results[ind].columnName}" />

<h:outputText value="#{results.columnName}" />
于 2012-12-18T05:31:18.623 に答える
0

最終的に、richfaces データテーブルのリストのリストが必要であることがわかりました。これは、私が慣れ親しんでいるプライムフェイスを使用して行う方法ではありません。記録として、richfaces の例のバッキング Bean コードの例は基本的にゼロです。これは、primefaces がはるかに優れているもう 1 つの理由です。

private List<List<TableBean>> results = null;

public List<List<TableBean>> getResults() {

    if(results == null) {
        results = new ArrayList<List<TableBean>>();
        results.add(new TableBean("id"));
        results.add(new TableBean("name"));
        System.out.println("results.size = "+results.size());
        System.out.println("results.0 = "+results.get(0).getColumnName());
    }
    return results;
}
于 2012-12-19T22:44:27.430 に答える