Ваадин 11: освежить все (снова) - PullRequest
0 голосов
/ 05 декабря 2018

здесь - это хорошая тема о DataProvider.refreshAll () в Vaadin 8.5.1, но в Vaadin 11 не работает, похоже, *

Я использовал это стартовое приложение чтобы поиграть.Он отображает некоторые воображаемые данные о продукте в сетке.

Сначала я добавил команду обновления в SampleCrudView:

public HorizontalLayout createTopBar() {
    ...
    HorizontalLayout topLayout = new HorizontalLayout();
    Button btn = new Button("refresh");
    btn.addClickListener(event -> dataProvider.refreshAll());
    topLayout.add(btn);
    ...
    return topLayout;
}

Люди из vaadin переопределяют getId () в своем ProductDataProvider следующим образом:используйте его как идентификатор объекта:

@Override
public Integer getId(Product product) {
    Objects.requireNonNull(product,
            "Cannot provide an id for a null product.");

    return product.getId();
}

Этот ProductDataProvider расширяет ListDataProvider, который инициализируется при запуске данными из MockDataService, так что мы всегда имеем дело с одними и теми же объектами.Я изменил это:

public class MockDataService extends DataService {
...
@Override
public synchronized List<Product> getAllProducts() {
    //added ->
    MockDataGenerator.resetProductCounter(); //this one sets nextProductId = 1
    products = MockDataGenerator.createProducts(categories);
    products.stream().forEach(p -> System.out.println(p.getId() + ", " + p.getProductName()));
    //<- added
    return products;
}

Так что теперь вы будете получать новые экземпляры Продукта в том же диапазоне идентификаторов каждый раз, когда вы вызываете getAllProducts ():

  public class ProductDataProvider extends ListDataProvider<Product> {
 ...

 @Override
 public Stream<Product> fetch(Query<Product, SerializablePredicate<Product>> query) {
     //added ->
    this.getItems().clear();
    this.getItems().addAll(DataService.get().getAllProducts());
     //<- added
     return super.fetch(query); 
 }   

ТакДело в том, что это не работает - данные в сетке остаются неизменными после нажатия кнопки «Обновить».

Есть предложения?

С уважением,

m_OO_m

1 Ответ

0 голосов
/ 05 декабря 2018

Это вызвано ошибкой , которая была исправлена ​​ пару дней назад.Исправление будет включено в следующую версию обслуживания.

...