我正在尝试使用Map集合中的值(无论是哪种类型的HashMap、TreeMap)来填充ICEfaces数据表组件并显示对象属性。我能找到的唯一例子是那些简单地将Map的值导出到List集合中,并使用它来填充数据表的例子。然而,我觉得这是非常浪费的,我现在不得不保留两个精确价值的集合。
数据表组件甚至支持对Map的值进行迭代吗?如果没有,是否有比前面提到的解决方案更好的方法来解决这个问题?
对于好奇的人来说,我想使用Map集合来快速删除,它最自然地适合我的数据(基于密钥)。
值得一试:
我找到了以下解决方案:JSF:使用Datatable中的Map数据,URL中的例子指的是richfaces,但在我看来,你所需要做的就是使用IceFaces标签,如果你将使用LinkedHashMap,它可能会帮助你处理订单。。。
如果URL坏了,下面是代码:
Map<String,String> myMap;
public List<String> getMapKeys(){
List<String> ret = new ArrayList<String>();
for (String s : myMap.keySet())
ret.add(s);
return ret;
}
在JSF页面上:
<rich:extendedDataTable value="#{myBean.mapKeys}" var="item"
id="datatable">
<rich:column width="190px" sortable="false" label="Map entries"
id="labelColumn">
<f:facet name="header">Map entries</f:facet>
<h:outputText value="#{myBean.myMap[item]}" />
</rich:column>
</rich:extendedDataTable>