ビュー レイヤーでは、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>