在 Primefaces 数据中显示列总数 table

Display Column Total in Primefaces data table

将按不同列属性过滤的 Primefaces table 需要有一个摘要行,该行将在用户更改过滤器中的值时更新其值。有什么办法吗?

payments.xhtml 中创建一个 Column Group 页脚:

<p:dataTable var="payments" value="#{testBean.payments}" filteredValue="#{testBean.filteredPayments}">

    <p:column headerText="Payment status:" filterBy="#{payment.status}">
        <h:outputText value="#{payment.status}"/>
    </p:column>

    <p:columnGroup type="footer">
        <p:row>
             <p:column colspan="6" headerText="Total: "/>
             <p:column colspan="2" headerText="#{testBean.totalPaymentsSum}"/>
       </p:row>
    </p:columnGroup>

</p:dataTable/>

TestBean.java中添加一个方法作为getter来计算汇总行:

List<Payment> payments;
List<Payment> filteredPayments;

public String getTotalPaymentsSum() {
    int total = 0;

    for(Payment payment : filteredPayments) {
        total += payment.getAmount();
    }

    return new DecimalFormat("###,###.###").format(total);
}

有关更多过滤器选项,请参阅 Datatable Filter 展示。

如果你有很多数据并且你正在使用数据表Lazy loading,你可以在load()中计算汇总行filter() 方法。