java以编程方式更新Vaadin网格
我试图使用Vaadin 14创建一个网格,该网格由调用下面updateFieldByName方法的事件处理程序更新。但是,网格永远不会刷新
我想要实现的只是:
aaa 1
bbb 2
updateFieldByName(“aaa”、“ok”)
aaa ok
bbb 2
我试过使用网格。设置项(属性)和网格。setDataProvider(dataProvider),但该表只是不想更新
List<Property> properties = Arrays.asList(new Property("aaa", "1"), new Property("bbb", "2"));
ListDataProvider<Property> dataProvider = DataProvider.ofCollection(properties);
Grid<Property> grid = new Grid<>(Property.class);
grid.setDataProvider(dataProvider);
private void updateFieldByName(final String name, final String value) {
properties.stream().filter((o) -> o.getName().equals(name)).forEach((p) -> {
p.setValue(value);
dataProvider.refreshAll();
});
}
public static class Property {
private String name;
private String value;
public Property(final String name) {
this(name, "-");
}
public Property(final String name, final String value) {
super();
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(final String value) {
this.value = value;
}
@Override
public String toString() {
return "[" + name + " = " + value + "]";
}
}
# 1 楼答案
您究竟是如何调用
updateFieldByName
方法的?我添加了一个TextField,在这里输入一个aaa
,在调用ValueChangeEvent
之后,网格被正确更新这是我正在使用的代码。(我为
Property
类创建了一个单独的类)属性。java