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

任何原因如Set objects = new HashSet(); 不应该在JSF Datatable中工作? 它适用于List。

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

经过漫长的决策过程(特别是Hibernate / JPA社区推动人们通常使用Set for nm关系),JSF规范团队已经为即将到来的JSF 2.2决定让DataModel接口支持Collection接口而不是单独的List ,新的CollectionDataModel实现的帮助。 这也支持集合。 另见JSF规范问题479 。 您应该记住使用LinkedHashSet而不是HashSet ,当然如果您打算使用可编辑的数据表。 LinkedHashSet维护元素的顺序。