Отображение объектов из коллекции Set в Datatable JSF не работает - PullRequest
11 голосов
/ 10 октября 2011

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

1 Ответ

23 голосов
/ 10 октября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...