jsf - :dataTable renders rows correctly but does not show cell values while ui:repeat does

标签 jsf jsf-2 datatable uirepeat

我有以下数据表。

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

数据表现在正在迭代(内部)并生成正确数量的行,但是当它尝试访问 fligt 的属性时jsf 引用了之前声明的变量,但找不到属性 fromPlace , toPLace等等

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

下面的示例将生成 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>

关于jsf - :dataTable renders rows correctly but does not show cell values while ui:repeat does,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26832153/

相关文章:

vb.net - 遍历特定数据表的行

jsf - 如何在 Facelets 模板中引用 CSS/JS/图片资源?

java - 如何根据 selectOneMenu 的当前选择验证 selectManyCheckbox 的最大选中值数量?

jsf - JSF 应用程序的审计跟踪 - 全局 valueChangeListener 可能吗?

C# DataTable ItemArray 返回 '{}' - 如何测试空值?

c# - 如果任何列值为空,则删除数据表行c#

java - 警告 : WEB9102: Web Login Failed: com. sun.enterprise.security.auth.login.common.LoginException:

java - JSF 链接到外部文件

java - 我编写的这些类在线程安全方面是否有问题?另外,ManagedBeans 是否在不同的线程中使用?

java - @ViewScoped 托管 bean 中的 @EJB 导致 java.io.NotSerializableException