有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Richfaces 3正在尝试获取类型上的动态列工作属性“0”

我正试图让JSF1.2遗留项目使用RichFaces3.3工作。决赛

我正在尝试创建一个包含动态列的datatable,但出现错误:

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;
    }
}

菜豆

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;
    }
}

共 (2) 个答案

  1. # 1 楼答案

    我终于明白了,您需要一个richfaces数据表的列表。这不是使用primefaces的方式,我已经习惯了使用primefaces。记录在案的是,richfaces示例基本上没有支持bean代码的示例,这只是primefaces更好的另一个原因

    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;
    }
    
  2. # 2 楼答案

    换线

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

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