使用数据表页脚中的数值数据自动计算列的总和

Bud*_*tne 9 datatable jsf sum el primefaces

当数字数据列在<p:dataTable>(或<h:dataTable>)中时,是否有任何方法可以在表的页脚中的摘要行中获取总和而不在辅助bean中计算它并再次将其作为另一个bean属性提供?

Bal*_*usC 16

如果您的环境支持Java EE 7的新EL 3.0(例如WildFly 8),那么您可以在EL中使用对Java 8类似的Stream和Lambda操作的新支持(是的,即使使用Java 7也是如此).

在您的特定情况下,您可以使用与Java 8相同的EL 3.0 IntStream#sum()(或者DoubleStream#sum(),取决于属性类型):

<h:dataTable value="#{bean.items}" var="item">
    <h:column>
        #{item.number}
    </h:column>
    <f:facet name="footer">
        Total: #{bean.items.stream().map(item->item.number).sum()}
    </f:facet>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

  • 效果很好,但在过滤数据表时效果不佳。您该如何管理? (2认同)