使用<a4j:repeat>迭代<rich:datatable>的内容不会显示任何内容 - JSF </a4j:repeat> </rich:datatable>

时间:2013-11-04 12:33:19

标签: java jsf jsf-2 richfaces richdatatable

我想做一些简单的事情:在单个列的表中显示Java列表的内容。 问题是:表应该出现的地方,没有显示任何内容。

查看代码:

PesquisaBean.java

 private String title;
    List<String> uriByTitle = new ArrayList<String>();

        public String getTitle() {
        return title;
    }


    public void setTitle(String title) {
        this.title = title;
    }


    public List<String> getUriByTitle() {
        for( String s : this.uriByTitle ) {     //test
              System.out.println(s);
         }
       return uriByTitle;
    }


    public void search() {

        this.searchUriByTitle();

            System.out.println("1: " + this.uriByTitle);  //test

    }


    public void searchUriByTitle() {
            RDFNode uri;


            String queryString = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " +
                    "PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?document WHERE { " +
                    "?document dc:title ?title." +
                    "FILTER (?title = \"" + this.getTitle() + "\" ). }";

            Query query = QueryFactory.create(queryString);

             // Execute the query and obtain results
            QueryExecution qe = QueryExecutionFactory.create(query, databaseModel);
            ResultSet results =  qe.execSelect();

            while( results.hasNext() ) {
               QuerySolution querySolution = results.next();
               uri = querySolution.get("document");
               ResourceImpl resourceImpl = (ResourceImpl) uri;

               this.uriByTitle.add(uri.toString());                //adding elements
            }

            qe.close(); 
        }

在上面的代码中,我进行了2次测试:1 - 尝试在uriByTitle方法内打印变量search()的值,并尝试在{{1}内部打印它} 方法。在getUriByTitle()内部的测试中,我在Eclipse控制台上打印了正确的内容,但是在search()内部的测试中我没有打印出来。

请查看代码的其他部分:

pesquisaDocumento.xhtml

getUriByTitle()

问题出在这里?谢谢!

1 个答案:

答案 0 :(得分:0)

您正在为“getUriByTitle”返回的列表中的每个元素创建一列。这不是你使用rich:dataTable的方式。试试这个:

<rich:dataTable value="#{pesquisaBean.uriByTitle}" var="uri">
    <rich:column>
        <f:facet name="header">URI</f:facet>
        #{uri}
    </rich:column>
 </rich:dataTable>