Подтвердить что ты не робот

Отображение объектов из коллекции Set в Datatable JSF не работает

Любая причина, по которой такой, как Set<MyObject> objects = new HashSet<MyObject>();, не должен работать в JSF Datatable? Он работает со списком.

4b9b3361

Ответ 1

Что касается того, почему Set вообще не поддерживается, это связано с тем, что эта структура данных никогда не предназначена для хранения коллекции объектов, которая упорядочен по индексу. List делает это, и эта структура данных является наиболее разумной структурой данных для представления значения UIData. Интерфейс DataModel, который представляет собой завернутое значение компонентов UIData и содержит индексы строк и запоминает текущую строку для итерации при обработке рендеринга и формы отправки на обратной стороне, поддерживает из классов коллекции Java только List интерфейс в аромате ListDataModel.

После долгого процесса принятия решения (особенно для сообщества Hibernate/JPA, которое обычно использует Set для отношений nm), команда разработчиков JSF имеет для предстоящей JSF 2.2, наконец, решил, что DataModel интерфейс поддерживает Collection интерфейс, а не только List, с помощью новой реализации CollectionDataModel. Это также поддерживает множества. См. Также спецификация JSF 479. Вы должны иметь в виду использовать LinkedHashSet вместо HashSet, конечно, если ваше намерение для редактирования таблицы данных. A LinkedHashSet поддерживает упорядочение элементов.