dataTable ленивая загрузка и разбиение на страницы, не обновляющиеся 'сначала' - PullRequest
0 голосов
/ 09 июня 2011

У меня есть dataTable с lazyLoading, нумерацией страниц и кнопкой в ​​каждой строке, чтобы удалить строку. При удалении всех строк на последней странице, нумерация страниц выделяет первую страницу, но не показывает данных.

Например, у меня есть модель с 6 элементами и таблицей данных, отображающей 2 строки одновременно. Я перехожу на последнюю страницу, удаляю там два элемента и, даже когда пагинатор показывает, что есть страницы, текущая выделенная страница является первой, и данные не отображаются.

Мои тесты показывают, что проблема с параметром first метода fetchLazyData в моей ленивой модели не обновляется должным образом.

Это вывод после загрузки страницы, перехода на последнюю страницу таблицы и удаления строк на этой странице:

信息: first: 4. pageSize: 2
信息: first: 4. pageSize: 2
信息: first: 4. pageSize: 2

Код прилагается.

Насколько я тестировал, эту проблему можно воспроизвести в Glassfish v3 с обоими простыми интерфейсами 2.0.1 и 2.1 rc1 SNAPSHOT.

Мой текущий обходной путь - проверка, если значением first является число элементов в модели и изменение его, когда это необходимо в вызове fetchLazyData

public List<Model> fetchLazyData(int first, int pageSize) {
        System.out.println("first: " + first + ". pageSize: " + pageSize);
        first = models.size() <= first ? 0 : first;

        return models.subList(first, Math.min(first + pageSize, models.size()));
    }
};

но добавление этой строки в каждую ленивую модель - это трудоемкая работа, которая выглядит не очень хорошо.

Я что-то упустил?

...