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