JSF 保留旧数据

我有一个 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 变量中设置新数据之前,我该怎么做才能只显示一次或删除表中的数据?


湖上湖
浏览 115回答 1
1回答

扬帆大鱼

行原来是PrimeFace的bug。确实正如@Kukeltje 提到的,问题出在liveScroll="true". 当我删除它时,它起作用了。因此,解决方法是向RowsDataTable添加与以下大小相同的属性scrollRows:&nbsp; <p:dataTable rowIndexVar="rowIndex" var="report"&nbsp;&nbsp; &nbsp; id="TableResult"&nbsp;&nbsp; &nbsp; style="height:685px;width: 97vw;"&nbsp;&nbsp; &nbsp; value="#{reportResultController.resultRows}"&nbsp;&nbsp; &nbsp; resizableColumns="true"&nbsp; &nbsp; scrollable="true"&nbsp; &nbsp; scrollHeight="95%"&nbsp; &nbsp; scrollRows="30"&nbsp; &nbsp; rows="30"&nbsp; <!-- This is the solution-->&nbsp; &nbsp; liveScroll="true"&nbsp; &nbsp; lazy="false"/>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java