gpt4 book ai didi

jsf-2 - 如何在primefaces的数据表中迭代Map

转载 作者:行者123 更新时间:2023-12-01 01:12:23 26 4
gpt4 key购买 nike

将 JSF 2.1 与primefaces 一起使用

class FOO{
String name;
String value;
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setValue(String value){
this.value=value;
}
public String getValue(){
return this.value;
}

}

我有一个 Map<String, List<FOO>>
标题名称应该是 map 的键。我需要创建多列(即 map 的大小),每列都应该有 FOO 列表以在行中显示 FOO.Name。

例如:
如果 map 大小为 4

库姆斯-----Key1

第一列的行 - List<FOO>针对 Key1

库姆斯-----Key2

第一列的行 - List<FOO>反对 Key2

库姆斯-----Key3

第一列的行 - List<FOO>针对 Key3

库姆斯-----Key4

第一列的行 - List<FOO>反对 Key4

有人能告诉我用什么组件在 xhtml 页面中显示这种类型的输出吗?我曾尝试使用动态数据表创建,但无法显示这一点。

最佳答案

你有一个错误的数据结构。将其更改为正确的数据结构。最简单的方法是收集 List<Map<String, Object>> 中的数据代表 rows属性(property)。 Map代表列,以列名为键。在单独的 List<String> 中收集这些列名代表 columns属性(property)。最后通过<p:columns>显示如下:

<p:dataTable value="#{bean.rows}" var="row">
<p:columns value="#{bean.columns}" var="column">
#{row[column]}
</p:columns>
</p:dataTable>

如有必要,以下是如何将奇怪的数据结构转换为正确的数据结构(并假设每个 List<FOO> 的大小相同;否则整个数据结构就没有意义了):
Map<String, List<FOO>> wrongDataStructure = createItSomehow();
List<String> columns = new ArrayList<String>(wrongDataStructure.keySet()); // Note I expect LinkedHashMap ordering here.
List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
int size = wrongDataStructure.values().iterator().next().size();

for (int i = 0; i < size; i++) {
Map<String, Object> row = new HashMap<String, Object>();

for (String column : columns) {
row.put(column, wrongDataStructure.get(column).get(i).getName());
}

rows.add(row);
}

// Now use "columns" and "rows".

关于jsf-2 - 如何在primefaces的数据表中迭代Map<String,Collection>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com