2015-11-24 1 views
2

Есть ли какой-либо особый способ достижения пейджинга/ленивой загрузки в таблицах Ваадина. Я попытался найти документацию, но не смог.Lazy loading in Vaadin Table?

+0

Ленивая загрузка осуществляется в таблице (и большинство других компонентов). Но для его работы вам нужен контейнер, который правильно его обрабатывает. –

+0

Не могли бы рассказать мне тип контейнера, который я использую для использования – chathura

+0

Каким образом хранятся ваши данные? –

ответ

4

Использовать Viritin add-on и его компонент MTable. Я - самый эффективный (серверный ресурс), способный сделать это, а также имеет самый простой API (нет необходимости работать с API-интерфейсом Container вообще!). Просто реализуйте два простых интерфейса, и все готово. Вот пример с лямбдами и базовым DAO.

@Inject 
GPSRouteService s; 

@Override 
public Component getTable() { 
    return new MTable<Update>(s::fetchUpdates, s::getEntityCount) 
      .withFullWidth(); 
} 

Приведенный выше пример кода от this example app, который показывает различные подходы ленивым погрузки в Vaadin. Если вы пользователь Spring, посмотрите на this example, который подключается к репозиторию Spring Data JPA, а также использует дополнительную сортировку.

Я поддерживаю Viritin, но я также поддерживал Vaadin и различные дополнения на протяжении 7 лет, и в настоящее время я занимаюсь техническим маркетингом для Vaadin.

+0

Не могли бы вы рассказать пример кода о том, как использовать этот Viritin для достижения Lazyloading? – chathura

+1

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

1

Ленивая загрузка полностью переработан и хорошо поддерживается из коробки в Vaadin 8. Вот пример from the official docs:

DataProvider<Person, Void> dataProvider = new BackendDataProvider<>(
    // First callback fetches items based on a query 
    query -> { 
    // The index of the first item to load 
    int offset = query.getOffset(); 

    // The number of items to load 
    int limit = query.getLimit(); 

    List<Person> persons = getPersonService().fetchPersons(offset, limit); 

    return persons.stream(); 
    }, 
    // Second callback fetches the number of items for a query 
    query -> getPersonService().getPersonCount() 
); 

Grid<Person> grid = new Grid<>(); 
grid.setDataProvider(dataProvider); 

 Смежные вопросы

  • Нет связанных вопросов^_^