Когда числовые данные перечислены в <p:dataTable>
(или <h:dataTable>
), есть ли способ получить общую сумму в итоговой строке в нижнем колонтитуле таблицы, не вычисляя ее в резервной копии bean и предоставляя ее как снова другое свойство bean?
Автоматическое вычисление общей суммы столбца с числовыми данными в datatable footer
Ответ 1
Если ваша среда поддерживает Java EE 7 новый EL 3.0 (например, WildFly 8), то вы можете использовать новую поддержку Java 8- например Операции Stream и Lambda в EL (да, это работает даже при использовании Java 7).
В вашем конкретном случае вы можете использовать эквивалент EL 3.0 Java 8 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>