<p:dataTable lazy="true" liveScroll="true"> 使用时,当页面滚动时,<p:rowExpansion> 中出现错误的值和 <p:cellEditor> 中出现空值。

4
我正在使用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中检查过了,在<h:outputText>中没有值,如生成的HTML所确认的那样:<div class="ui-cell-editor-output" style="display: none;"></div>。正如您所看到的,div中没有值。
后台bean为@SessionScoped
这是如何引起的,我该如何解决?
1个回答

2

这是PrimeFaces已知的问题,并且在Elite版本中已经报告并修复(如果我没记错,版本号为4.0.7)。然而,社区版本尚未包含此修复。PrimeFaces 5.0有一个RC版本,其中包含此修复。您可以下载并测试它是否符合您的需求,但请注意这只是一个发布候选版本,不是最终版本。据我所知,5.0正式版的预计发布时间为五月上旬。


@Tushee,我不明白RC是什么意思,PF5.0是付费版本吗?Elite Version 4.07是付费版还是开源的? - arvin_codeHunk
4.0.7是Elite版本(您需要付费,它不是开源的)。 5.0是社区版(它是开源的)。 RC = Release Candidate(它作为测试版(公共测试)可供下载,但不建议在生产版本中使用)。 - Tushee
感谢您的提问。那么针对测试和开发,我们可以使用这个RC 5.0版本吗?目前这是我遇到的主要问题,我进行了一些解决方法的尝试并发现,在datatable中删除"rows"属性后,live scroll和其他功能可以正常工作,但排序和筛选除外。而当我添加"rows"时,live scroll的效果变得很差。 - arvin_codeHunk
是的,你可以自由使用它。你也可以用于生产,只是不建议 :) 如果这个答案适合你,请接受它作为正确答案。 - Tushee
嗨,tushee,我最近使用了RC PF 5.0,但它仍然无法正常工作。当从数据表中删除行属性并进行实时滚动时,排序和过滤功能无法正常工作。 - arvin_codeHunk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接