EL Stream API не привязан к Java 8 Stream API.EL Stream API - это полностью автономный API, который был изначально разработан для Java EE 7 и привязан к Java 7. Обратите внимание, что это действительно означает, что вам совсем не нужна Java 8 при использовании EL Stream API, он уже будет работатьв Java 7.
Исторически лидеры спецификации EL пытались разработать интерфейс EL Stream API настолько близким к предложению Java 8 Stream API, насколько это было известно в то время.К сожалению, среди прочего EL Stream#join()
проскользнул, потому что Collectors#joining()
был добавлен только позже.
В любом случае вы не можете использовать какие-либо функции Stream API Java 8, такие как Collectors#xxx()
, в методах EL Stream.Как уже говорилось, API EL Stream полностью автономен.Для сбора EL-потока доступны только методы Stream#toArray()
, Stream#toList()
и Stream#reduce()
.См. Также главу " Операции над объектами коллекции " в руководстве по Java EE и главу 2.3 "Операции с коллекциями" спецификации EL 3.0 .
Итак, в API EL StreamЛучшая ставка для сбора потока путем объединения строк или любого другого пользовательского коллектора - использовать Stream#reduce()
.Ниже приведен пример для вашего конкретного случая:
<div>${myList.stream().map(e -> e.stringValue).reduce((l, r) -> l += ', ' += r).get()}</div>
Обратите внимание, что я воспользовался возможностью, чтобы упростить ${e.getStringValue()}
до ${e.stringValue}
, так как оно в основном представляет свойство компонента в EL.