Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
126 views
in Technique[技术] by (71.8m points)

java - Displaying objects from a Set collection in Datatable JSF does not work

Any reason why a such asSet<MyObject> objects = new HashSet<MyObject>(); shouldn't work in the JSF Datatable? It works with List.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...