Относительно того, почему 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
поддерживает порядок элементов.