Any reason why a such asSet<MyObject> objects = new HashSet<MyObject>();
shouldn't work in the JSF Datatable? It works with List.
As to why a Set
in 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 Set
for 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 CollectionDataModel
implementation. 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With