h: dataTable正确地呈现行,但不显示单元格值,而ui:repeat则显示



我有以下数据表。

<h:dataTable value="#{flightReservation.flightList}" var="flight">
    <h:column>
        <h:outputText value="#{flight.fromPlace}" />
    </h:column>
    <h:column>
        <h:outputText value="#{flight.toPlace}" />
    </h:column>
</h:dataTable>

即使行数等于flightList大小,它也不显示单元格内的任何数据。

当我用<ui:repeat>替换它时,它会显示数据。

<ui:repeat value="#{flightReservation.flightList}" var="value">
    <h:outputText value="#{value.fromPlace}" />
    <h:outputText value="#{value.toPlace}" />
</ui:repeat>

这是怎么造成的,我该如何解决?

我曾经遇到过同样的行为,这只是变量范围的问题:

您的意思是,行数是正确的,但内容没有显示。您将变量命名为flight,我假设具有此名称的值在标记的早期已经使用过,甚至用作<ui:param>

Datatable现在正在迭代(内部)并生成正确数量的行,但当它试图访问fligt的属性时,jsf引用了先前声明的变量,但未能找到属性fromPlacetoPLace等。

尝试重命名您的变量,看看这是否解决了您的问题。

下面的例子将产生stringList.size()yoloyolo,即使人们期望显示列表的内容。如果列表源是由对象组成的,则对属性的任何实例访问都将失败,因为yoloylo不是预期类型的对象。

<ui:param name="foo" value="yoloyolo" />
<h:dataTable value="#{backingBean.stringList}" var="foo">
    <h:column>
        <f:facet name="header">string</f:facet>
        - #{foo}
    </h:column> 
</h:dataTable>

相关内容

  • 没有找到相关文章

最新更新