Автоматический расчет общей суммы столбца с числовыми данными в датируемом нижнем колонтитуле

Когда числовые данные перечислены в <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>
Другие вопросы по тегам