h:dataTable 显示正确的数字但空白行

h:dataTable displays the correct number but blank rows

我的 JSF 应用程序运行异常,我请求同事帮助我确定解决方案。

应用程序通过Facade+DAO从数据库中获取数据类,通过调试和println我可以声明对象集合是正确的(在下面的例子中,集合包含5个对象及其attributes),但是将这个collection传到Primefaces页面时,dataTable没有显示属性,明明行数是正确的,但是没有显示属性,如图。

我研究了其他帖子,但描述的错误与我的不同:

after filtering Empty rows blank rows displayed while paging in the datatable using Primefaces

primefaces datatable is showing blank rows. Showing the same number of rows as the records in backed list

由于托管 bean 正确地重新发布了集合,我认为应该显示问题(即在 JSF 页面上),并试图找到可能的错误位置,我创建了一个页面而不使用 Primefaces 或Facelets,只是纯 JSF 组件,但故障依然存在。基本代码如下所示:

以下是代码片段:

使用这个简单的代码,页面如下所示:

getListColetas中,我插入了一个println来验证集合是完整的,即每个对象'coleta'都有对象'setor'和每个'setor'有对象 'agencia'。但是,根据在 JSF 页面上使用 'empty' 的建议,

<h:outputText value="#{empty coleta} - #{empty coleta.setor} - #{empty coleta.setor.numero}"/>

return 是 false - true - true,我不知道为什么。

我的完整应用程序使用了以下库和依赖项(Spring 仅用于 DI 和 DAO 类):

解决:在dataTable标签中,我把属性var="coleta"改成了var="c",像这样:

<h:dataTable value="#{coletaMB.coletas}" var="c"
        styleClass="order-table"
        headerClass="order-table-header"
        rowClasses="order-table-odd-row,order-table-even-row">
       <h:column>
            <f:facet name="header">Nr. Setor</f:facet>
                <h:outputText value="#{c.setor.numero}"/>
                       ---- #{c.setor.numero} ----
       </h:column>
</h:dataTable>   

我想 JSF 与 ColetaMB 中的 @ManagedProperty 'coleta' 冲突,尽管我知道 var 属性特定于传递给的不同集合对象数据表。