使用 <p:dataTable lazy= "true" liveScroll "true" >= 时,滚动页面上的 <p:rowExpand> 中的值错误,<p:cel



我使用的是JSF 2.2和PrimeFaces 4.0。我有一个<p:dataTable>,具有实时滚动、延迟加载、行扩展和单元格编辑等功能。

<p:dataTable
    id="dtaTable"
    selection="#{cont.selectedArray}"
    resizableColumns="true"
    draggableColumns="true"
    var="dataModel"
    value="#{cont.yieldBondsModel}"
    editable="true"
    editMode="cell"
    selectionMode="multiple"
    rowSelectMode="add"
    scrollable="true"
    scrollHeight="650"
    rowKey="#{modeld.id}+#{model.name}"
    rowIndexVar="rowIndex"
    filterEvent="enter"
    styleClass="screenScrollStyle"
    scrollRows="25"
    liveScroll="true"
    lazy="true"
    rows="50"
    filteredValue="#{cont.filteredModel}"
    widgetVar="dt4"
>
    <p:rowExpansion>
        <h:panelGrid id="display" columns="2" cellpadding="4" style="width:300px;" styleClass="ui-widget-content grid">
            <f:facet name="header" styleClass="dataTableHeader">Other Data</f:facet>
            <h:outputText value="id " />
            <h:outputText value="#{dataModel.id}"/>
            <h:outputText value="Name" />
            <h:outputText  value="#{dataModel.name}" />
        </h:panelGrid>
    </p:rowExpansion>
    <p:column width="15">
        <p:rowToggler />
    </p:column>
    ...
</p:dataTable>

在第一页上,一切都像一个符咒。一旦我向下滚动,数据就会被延迟加载,非常好,但在行扩展和单元格编辑过程中会出现一些问题:

  1. 在行扩展中,我得到了错误的值。可能与其他行的值重叠。

  2. 单元格编辑也不起作用。编辑任何单元格后,值都不会显示在单元格编辑器中。我已经检查了Firebug,生成的HTML <div class="ui-cell-editor-output" style="display: none;"></div>确认了<h:outputText>中没有值。正如您所看到的,div中没有任何值。

支持bean是@SessionScoped

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

这是PrimeFaces上的一个已知问题,在Elite版本(4.0.7,如果我记得很清楚的话)中已经报告并修复了。然而,社区发布版还没有包含此修复程序。PrimeFaces 5.0有一个RC包含此修复程序。您可以下载它并测试它是否适合您的需求,但请注意,这只是一个候选版本,而不是最终版本。AFAIK 5.0决赛的预计到达时间是5月上半月。

最新更新