Я пытаюсь создать сетку с использованием Vaadin 14, которая обновляется обработчиками событий, которые вызывают метод updateFieldByName, указанный ниже.Тем не менее, сетка никогда не обновляется.
Чего я хотел бы добиться, так это:
aaa 1
bbb 2
updateFieldByName ("aaa", "ok");
aaa ok
bbb 2
Я пытался использовать grid.setItems (свойства) и grid.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 + "]";
}
}