【问题标题】:Iterating content of <rich:datatable> with <a4j:repeat> does not show anything - JSF使用 <a4j:repeat> 迭代 <rich:datatable> 的内容不显示任何内容 - JSF
【发布时间】:2013-11-15 01:50:54
【问题描述】:

我想做一些简单的事情:在单列表格中显示 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-尝试在 search() 方法内打印变量 uriByTitle 的值,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> 

这里有什么问题?谢谢!

【问题讨论】:

    标签: java jsf jsf-2 richfaces richdatatable


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 2020-11-10
      • 2012-04-12
      • 2019-11-11
      相关资源
      最近更新 更多