为了账号安全,请及时绑定邮箱和手机立即绑定

JSF 保留旧数据

JSF 保留旧数据

湖上湖 2021-07-02 14:11:14
我有一个 PrimeFaces 按钮,它应该通过 Java 处理数据并将其显示在数据表中。这是代码:    <p:dataTable rowIndexVar="rowIndex" var="report"         id="TableResult"         style="height:685px;width: 97vw;"         value="#{reportResultController.resultRows}"         resizableColumns="true"        scrollable="true"        scrollHeight="95%"        scrollRows="30"        liveScroll="true"        lazy="false"/>和按钮呈现表的数据():           <p:commandButton value="Report "                action="#{ReportController.produceReport}" id="produce_report"                update="TableResult"                process="TableResult"/>这是Java部分    public void produceReport() {        resultRows = reportResultUtils.runReport(rph, rowsLimit); //Returning List of rows}    public List<Object[]> getResultRows() {    return resultRows;}数据处理工作正常。问题是,在我为相同的数据按两次按钮的情况下,我第一次看到结果,下次我看到它加倍而不是一次。第一次身份证名称1 大卫2 乔第二次身份证名称1 大卫2 乔1 大卫2 乔第三次和第四次保持它只像第二次一样翻倍。如果我更改参数以获得不同的表,则它会清除表而不是混淆数据。在 resultRows 变量中设置新数据之前,我该怎么做才能只显示一次或删除表中的数据?
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞


原来是PrimeFace的bug。


确实正如@Kukeltje 提到的,问题出在liveScroll="true". 当我删除它时,它起作用了。


因此,解决方法是向RowsDataTable添加与以下大小相同的属性scrollRows:


  <p:dataTable rowIndexVar="rowIndex" var="report" 

    id="TableResult" 

    style="height:685px;width: 97vw;" 

    value="#{reportResultController.resultRows}" 

    resizableColumns="true"

    scrollable="true"

    scrollHeight="95%"

    scrollRows="30"

    rows="30"  <!-- This is the solution-->

    liveScroll="true"

    lazy="false"/>


查看完整回答
反对 回复 2021-07-23
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信