0

我不确定为什么会发生这种情况,而且我以前也从未遇到过这种情况。在我正在开发的应用程序中,我使用 a 来显示某些旅行数据。用户选择有关旅行的某些信息(从/到/日期等),然后单击搜索时,数据表会加载结果。

问题:加载数据表时,似乎遗漏了 1 个(或更多)结果。刷新页面时,这次丢失的结果以某种方式显示,从表的大小变化可以看出。但是,单击表格下方的“导出到 Excel”功能(从 PF 内置)已经显示了这个缺失的行,无论是否刷新。这似乎表明它可能是某种 UI 问题?

任何帮助表示赞赏,谢谢!另外,如果您需要任何其他详细信息,请告诉我。

桑吉夫

编辑:primefaces 数据表的代码如下:

<p:dataTable
        id="#{viewName}Table"
        value="#{resultsBean.legs}"        
        var="leg"
        paginator="true"
        rows="20">
        <p:column style="white-space: normal">
            <f:facet name="header">
                Traveler Name
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.trip.lastName}, #{leg.trip.firstName}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                Email Address
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.trip.email}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                Mobile Phone
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.trip.mobilePhoneNumber}"/>
        </p:column>            
        <p:column style="white-space: normal">
            <f:facet name="header">
                PNR Locator
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.trip.recordLocator}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                Travel Type
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.type}"/>
        </p:column>            
        <p:column style="white-space: normal">
            <f:facet name="header">
                Departure / Check-In Date
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.fromDate}">
                <f:convertDateTime pattern="dd-MMM-yyyy HH:mm"/>
            </h:outputText>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                Arrival / Check-Out Date
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.toDate}">
                <f:convertDateTime pattern="dd-MMM-yyyy HH:mm"/>
            </h:outputText>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                From Location
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.fromLocation.id == 0 ? '' : leg.fromLocation.locationName}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                To Location
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.toLocation.id == 0 ? '' : leg.toLocation.locationName}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                From Code
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.fromCode}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                To Code
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.toCode}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                Airline / Hotel Name
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.carrierName}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                Flight / Rail #
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.carrierVehicleCode}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                CMC
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.trip.cmc.name}"/>
        </p:column>
        <p:column style="white-space: normal">
            <f:facet name="header">
                Booking Country
            </f:facet>
            <h:outputText style="white-space: nowrap" value="#{leg.trip.cmc.location.locationName}"/>
        </p:column>
    </p:dataTable>

看起来由于某种原因,只有第一个结果被切断了。如果桌子上只有一页,那么刷新屏幕会显示缺失的结果。如果有多个页面,则转到下一页并返回第一页也可以解决问题。

4

1 回答 1

0

我最终解决了这个问题。我仍然不确定为什么会发生这种特殊行为,但我的解决方案只是在页面加载后通过 Java 刷新/重置数据表。以下代码最终工作:

final DataTable d = (DataTable)FacesContext.getCurrentInstance().getViewRoot().findComponent("ResultsTable");

d.reset();

基本上,由于刷新屏幕或转到 dataTable 中的下一页最终显示丢失的结果,我认为在服务器端强制重置最终会解决问题。看起来它奏效了!

桑吉夫

于 2013-08-19T19:56:47.733 回答