我正在尝试遍历 Map 项的列表,即 HashMaps 的 ArrayList 或类似的东西,并且我正在尝试在 primefaces 数据表中执行此操作。这基本上是我想要做的:
<body>
<h:form>
<p:dataTable value="#{customerBean.list}" var="map">
<c:forEach items="#{map}" var="entry">
<p:column headerText="#{entry.key}">
#{entry.value}
</p:column>
</c:forEach>
</p:dataTable>
</h:form>
</body>
在这种情况下,customerBean.list
is aList<Map<String, String>>
并且 entry 是 a Map<String, String>
。
我想要做的是根据一段时间内的条目数量创建动态数量的列,Map<String, String>
使用映射条目的键作为标题名称,并将值作为输出。c:forEach
当我使用硬编码时,这件事似乎工作正常Map<String, String>
,但显然它不能循环遍历p:dataTable
. 我假设程序采取了预防措施,以避免遍历不同大小的地图。那么我怎样才能使这项工作呢?如何根据地图中的条目数量创建任意数量的列?请注意,我 100% 确定Map<String, String>
在我的List<Map<String, String>>
编辑:
这是我的 bean 来源。代码工作正常,一切正常,问题只是循环不愿意通过我的地图:
@ManagedBean
@SessionScoped
public class CustomerBean {
private List<Map<String, String>> list = new ArrayList<Map<String, String>>();
private Mapper mapper = new Mapper();
public CustomerBean() {
list = mapper.all(); //gets data from database
}
public List<Map<String, String>> getList() {
return list;
}
public void setList(List<Map<String, String>> list) {
this.list = list;
}
}