フィルタリングできる列を含む豊富なデータテーブルがあります。
<!-- Data table with filters -->
<h:form>
<rich:dataTable value="#{sessionScope.paymentsBean.payments}" var="payment"
id="table">
<rich:column filterBy="#{sessionScope.payment.invoice}" filterEvent="onkeyup">
<f:facet name="header">Invoice</f:facet>
<h:outputText value="#{sessionScope.payment.invoice}" />
</rich:column>
<rich:column filterBy="#{sessionScope.payment.description}" filterEvent="onkeyup">
<f:facet name="header">Description</f:facet>
<h:outputText value="#{sessionScope.payment.description}" />
</rich:column>
<rich:column filterBy="#{sessionScope.payment.amount}" filterEvent="onkeyup">
<f:facet name="header">Amount</f:facet>
<h:outputText value="#{sessionScope.payment.amount}" />
</rich:column>
</rich:dataTable>
</h:form>
<!-- Total -->
<h:outputText id="total" value="#{sessionScope.paymentsBean.total}" >
<f:convertNumber maxFractionDigits="2" type="currency" currencySymbol="$"/>
</h:outputText>
合計については、sessionScope.paymentsBean.paymentsのすべての金額を合計して合計を取得できます。次の例では$355.00です。
Invoice Description Amount
1 Cash $5.00
2 Visa $50.00
3 Visa $100.00
4 MasterCard $200.00
Total: $355.00
ただし、「Visa」でフィルタリングすると、表と合計は次のようになります。
Invoice Description Amount
2 Visa $50.00
3 Visa $100.00
Total: $355.00
合計は$150である必要がありますが、getTotal()はfilterByデータを認識していません。rich:datatableのfilterBy基準に基づいて合計を動的に計算する方法はありますか?