jsf - 对 PrimeFaces 中的列数据表求和

标签 jsf primefaces datatable

我通过 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 >

最佳答案

只需添加一个<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>

bean :

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;
    }

}

型号:

public class Product {

    String name;
    int valueBuy;
    int valueSell;

}

关于jsf - 对 PrimeFaces 中的列数据表求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813955/

相关文章:

java - @Value 注解 & NullPointerException

jsf - DataTable 中的每一行都有复选框。如何在选中新复选框时取消选中前一个复选框

css - Primefaces CSS 中的 "Element "选择器

html - 是否可以在不使用表格的情况下使用 JSF 构建干净的 CSS 布局?

JSF 渲染弹出窗口出现 manegbean 情况?

c# - 你如何在 wpf 中创建数据表?

c# - 如何从数据表中删除空行

jquery - mysql数据表如何在获取记录计数时为字段名称加一

jsf - java.lang.ClassNotFoundException : org. apache.myfaces.webapp.StartupServletContextListener

jsf - 在离开页面之前关闭对话框