PrimeFaces中的Sum Column Datatable

Mau*_*hes 2 datatable jsf primefaces

我通过ListDataModel在JSF页面中接收数据.
我需要汇总列的所有值.
遵循JSF代码:

<p:dataTable id="table" value="#{ProductBean.listProduct}" var="item" style="font-size:"12px" >
<p:column >
   <f:facet name="header">
      <h:outputText value="NAME" />
   </f:facet >
   <h:outputText value="#{item[0].name}" />
</p:column >
<p:column >
   <f:facet name="header">
      <h:outputText value="VALUE BUY" />
   </f:facet >
   <h:outputText value="#{item[1].valuebuy}" />
</p:column >
<p:column >
   <f:facet name="header">
      <h:outputText value="VALUE SELL" />
   </f:facet >
   <h:outputText value="#{item[2].valuesell}" />
</p:column >
<p:columnGroup type="footer">  
    <p:row>                                        
       <p:column footerText="Total" />  
       <p:column footerText="TotalBuy" />   <<<<--------- Sum All Values of item[1].valuebuy and show here
       <p:column footerText="TotalSell" />  <<<<--------- Sum All Values of item[2].valuesell and show here                  
    </p:row>  
</p:columnGroup>
</p:dataTable >
Run Code Online (Sandbox Code Playgroud)

sku*_*sel 6

只需添加一个<f:facet name="footer"><p:column>将包含必要的信息,并调用Bean的方法来得到它.

基本示例:

风景:

<p:dataTable id="table" value="#{productBean.products}" var="product">
    <p:column>
        <f:facet name="header">
            <h:outputText value="NAME" />
        </f:facet>
        <h:outputText value="#{product.name}" />
        <f:facet name="footer">
            <h:outputText value="Total" />
        </f:facet>
    </p:column>
    <p:column>
        <f:facet name="header">
            <h:outputText value="VALUE BUY" />
        </f:facet>
        <h:outputText value="#{product.valueBuy}" />
        <f:facet name="footer">
            <h:outputText value="#{productBean.valueBuyTotal}" />
        </f:facet>
    </p:column>
    <p:column>
        <f:facet name="header">
            <h:outputText value="VALUE SELL" />
        </f:facet>
        <h:outputText value="#{product.valueSell}" />
        <f:facet name="footer">
            <h:outputText value="#{productBean.valueSellTotal}" />
        </f:facet>
    </p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

豆子:

public class ProductBean {

    private List<Product> products;

    @PostConstruct
    public void init() {
        //load products in some way, like products = service.list();
    }

    public int getValueBuyTotal() {
        int quantity = 0;
        for(Product p : products) {
            quantity += p.getValueBuy();
        }
        return quantity;
    }

    public int getValueSellTotal() {
        int quantity = 0;
        for(Product p : products) {
            quantity += p.getValueSell();
        }
        return quantity;
    }

}
Run Code Online (Sandbox Code Playgroud)

该模型:

public class Product {

    String name;
    int valueBuy;
    int valueSell;

}
Run Code Online (Sandbox Code Playgroud)