The root of the Java collections class structure is java.util.Collection, yet
this interface is not supported in the UIData family of components. Instead,
developers are forced to use a List or wrap their collection in a custom
DataModel implementation (which is what Seam does). The impedance mismatch is
introduced by the fact that java.util.Set is likely the most common association
mapping in ORM. Since the UIData model and ORM go hand-in-hand, there should be
support for java.util.Set (and preferably java.util.Collection) in UIData.
Granted, only a java.util.List can be accessed by index, which is why it would
be acceptable to wrap any other collection in a List implementation internally.
Basically, the developer should not have to care that they are creating a data
table from a Set vs a List. This is an area where the JSF abstract just bleeds.