2013-11-04 27 views
0

我想要做一件简单的事情:在单列的表中显示Java列表的内容。 问题是:表应该出现的位置,没有显示任何内容。使用<a4j:repeat>迭代<rich:datatable>的内容不会显示任何内容 - JSF

看代码:

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()方法和2-试图在getUriByTitle()方法内打印它。在search()里面的测试中,我得到了在我的Eclipse控制台上打印的正确内容,但在getUriByTitle()里面的测试中我什么也没有打印。

看代码的另一部分:

pesquisaDocumento.xhtml

<h:body> 
     <h:form enctype="multipart/form-data"> 
     <h:panelGrid columns="2"> 
      Titulo: <h:inputText value="#{pesquisaBean.title}" /> 
      <h:commandButton value="Procurar" action="#{pesquisaBean.search()}" /> 
      </h:panelGrid> 


      <rich:dataTable> 

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

      </rich:dataTable> <br /> 

     </h:form> 
    </h:body> 

请告诉我这里的问题?谢谢!

回答

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> 
+0

它的工作原理!非常感谢! – Luciane