As to why a
Setin
general isn’t supported, this is because this data structure is never intented
to hold a collection of objects which is ordered by an index. The
List
does that and this data structure is the most sensible data structure to
represent the value of an
UIData
component. The
DataModel
interface, which represents the wrapped value of the
UIData
components and holds the row indexes and remembers the current row for
iteration on render and form submit processing on postback, supports from the
Java collection classes only the
List
interface in flavor of
ListDataModel.
After a long decision process (especially pushed by Hibernate/JPA community
who generally uses
Setfor
n-m relationships), the JSF spec team has for the upcoming JSF 2.2 finally
decided to let the
DataModel
interface support the
Collection
interface instead of alone the
List,
with help of the new
CollectionDataModelimplementation. This supports sets
as well. See also JSF spec issue
479. You should
only keep in mind to use
linkedHashSet
instead of
HashSet,
certainly if your intention is to have an editable data table. A
linkedHashSet
maintains the ordering of the elements.



