问题描述
我想用 Map
项目填充我的 Vaadin 网格.那是因为我像这样从数据库中获取数据(也许这是主要问题):
I want to fill my Vaadin Grid with Map<String, Object>
items.Thats because I get my data from database like this(maybe it's main problem):
List<Map<String, Object>> result = jdbcTemplate.queryForList("select * from db", new Object[]{});
现在假设我创建了我的测试列表并用一些地图填充它:
Now lets say that I create my test List and fill it with some maps:
List<Map<String, Object>> items = new ArrayList<>();
items.add(map);
items.add(map2);
我知道如何使用非动态数据模型来实现,例如:
I know how to do it with non dynamic data model, for example:
grid.addColumn(Person::getName).setCaption("Name");
grid.addColumn(Person::getAge).setCaption("Age");
但是我如何创建我的网格列以便它使用我的地图键?我现在拥有的:
But how can I create my Grid columns so it will use my keys from map?What I have by now:
Grid<Map<String, Object>> grid = new Grid<>();
items.get(0).keySet().forEach(key ->
grid.addColumn(c -> c.get(key)));
grid.setItems(items);
它给了我输出:
b2/b3/b1
预期:
a1/a2/a3
b1/b2/b3
我不知道如何在列表中的每张地图中找到我的项目.还有它为什么不保留订单?欣赏每一个答案!
I have no clue how can I get to my item in every single map in list. And also why doesnt it keep an order?Appreciate every answer!
推荐答案
使用 LinkedHashMap
而不是 地图
.
LinkedHashMap
保留插入顺序.
LinkedHashMap
preserves the insertion order.
这篇关于如何使用地图项目类型填充 Vaadin Grid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!