【发布时间】:2014-11-08 04:04:46
【问题描述】:
我有一个两级地图Map<String,HashMap<String,String>>,我需要使用<p:dataTable> 显示它。托管bean的代码如下:
@ManagedBean(name="MyBean")
public class MyBean{
private Map<String,HashMap<String,String>> twoDimentionalMap;
public void getMapData(){
twoDimentionalMap=getDataFromDataStore();
}
}
现在我在view.xhtml 文件中使用此地图,如下所示:
<p:dataTable var="entrySet1" value="#{MyBean.twoDimentionalMap.entrySet()}">
<p:columns var="entrySet2" value="#{entrySet1.getValue()}">
#{entrySet2.getKey()} - #{entrySet2.getValue()}
</p:columns>
</p:dataTable>
我也尝试过使用
<p:dataTable var="entrySet1" value="#{MyBean.twoDimentionalMap.entrySet()}">
<p:columns var="entrySet2" value="#{MyBean.twoDimentionalMap.get(entrySet1.getKey()).getValue()}">
#{entrySet2.getKey()} - #{entrySet2.getValue()}
</p:columns>
</p:dataTable>
我什至尝试将外部地图转换为列表:
List<HashMap<String,String>> twoDimentionalMap;
但是数据表上没有显示任何内容。执行没有错误,但页面上没有显示任何内容。
如果我做错了什么或<p:columns> 在处理地图时遇到任何问题,请提出建议。
谢谢
【问题讨论】:
-
您只需要显示
entrySet2的键/值? -
是的,实际数据存储在内部映射中,所以我只需要显示
entrySet2的键/值 -
您需要动态列还是只是将它们用作迭代地图的一种方式?
-
我需要动态列。由于列名也在数据库中定义,所以我事先不知道列名,因此我不能使用静态列。列名和相应数据将在运行时从数据库中获取并显示在数据表中。
-
在地图中,您使用什么作为列名?外地图的key?
标签: jsf jsf-2 primefaces datatable