在Datatable JSF中显示Set集合中的对象不起作用

Luc*_*uke 11 java jsf java-ee

有什么理由Set<MyObject> objects = new HashSet<MyObject>();不应该在JSF Datatable中工作?它适用于List.

Bal*_*usC 23

至于为什么Set一般不支持,这是因为这个数据结构从不打算保存由索引排序的对象集合.这样List做和这个数据结构是表示UIData组件价值的最明智的数据结构.该DataModel接口,表示UIData组件的包装值并保存行索引并记住当前行以进行回放,并在回发时进行表单提交处理,仅支持Java集合类中的List接口ListDataModel.

经过漫长的决策过程(尤其是通常Set用于nm关系的Hibernate/JPA社区推动),JSF规范团队已经为即将到来的JSF 2.2决定让DataModel接口支持Collection接口而不是单独使用List,在新的帮助下CollectionDataModel实现.这也支持集合.另请参阅JSF规范问题479.如果您的目的是拥有可编辑的数据表,那么您应该牢记使用LinkedHashSet而不是使用HashSet.A LinkedHashSet维护元素的顺序.