2013-11-04 4 views
0

간단한 작업을 원합니다 : Java 목록의 내용을 단일 열의 테이블에 표시하십시오. 문제는 다음과 같습니다. 테이블이 표시되어야하는 위치는 아무 것도 표시되지 않습니다. 코드에서<rich : datatable> 내용을 <a4j:repeat>으로 반복하면 아무 것도 표시되지 않습니다. - 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(); 
     } 

I 2 개 시험했다 위에 다음의 내부 변수 uriByTitle의 값을 출력하는 1 시도 search() 방법을 사용하고 getUriByTitle() 방법으로 2를 시도했습니다. 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