2

ビュー レイヤーでは、9 つ​​の列を持つ Primefaces Datatable を使用します。最後の列には float 値 (列名 = 'Valor') があります。

'prefDep' という名前の整数列があり、その値 (ところで、foreignKey 値) のフィルターがあります。

<!-- column name omitted -->   
<p:column sortBy="#{item.prefDep}" filterBy="#{item.prefDep}">
  <h:outputText value="#{item.prefDep}"/>
</p:column>

Datatable の最後の行には、前述の「Valor」列の合計である固定の GrandTotal があります。

<p:columnGroup type="footer">
  <p:row>
    <p:column colspan="8" footerText="Grand Total:" />
    <p:column footerText="#{upbController.totalLosses}" />
  </p:row>
</p:columnGroup>

全体の合計を取得するコントローラ クラスのメソッド:

public int getTotalLosses() {  
  int total = 0;  
    for(Upb id : getItems()) {  
      total += id.getValor();
    }  
     return total;  
}  

私が欲しいもの: Datatable をフィルタリングするときに、「固定された」全体の合計ではなく、そのフィルタリングされた部分の値のみに対応する GrandTotal を表示したいと考えています。

どうすればいいですか?

前もって感謝します。

--

セクションの後:

私の AbstractController には次のものがあります。

private List<T> filteredUpb;
//...
public List<T> getFilteredUpb() {
    if (filteredUpb == null) {
        filteredUpb = this.ejbFacade.findAll();
    }
    return filteredUpb;
}

私の UpbController (managedBean) では:

private List<Upb> filteredUpb = null;
//...
public int getPerdasTotal() {
    int total = 0;
    for (Upb id : getFilteredUpb()) {
        total += id.getVlOco();
    }
    return total;
}

jsf で:

<p:column>
  <f:facet name="footer">
    <h:outputText value="#{upbController.perdasTotal}" />
  </f:facet>
</p:column>
4

1 に答える 1