Основные данные DataTable проблемы - PullRequest
4 голосов
/ 21 апреля 2011

Каков метод обновления данных на последующих страницах (вторая страница, третья страница и т. Д.) Таблицы данных Primefaces с использованием метода LazyDataModel ?

Кроме того, если я выбираю элемент в dataTable для просмотра его подробностей на другой странице, а затем возвращаюсь к dataTable с помощью либо кнопки «Назад» в браузере, либо реализую метод history.back () JavaScript, кажется, что dataTable всегда сбрасывается его положение на первой странице вместо того, чтобы вернуться на страницу, на которой был пользователь. Как заставить dataTable оставаться на последней просмотренной странице?

Мои коды для отложенной загрузки:

* * 1010

А для Submit метод:

public String Submit()
{
    sort     = sortBean.getSort();
    category = categoryBean.getCategory();
    operator = operatorBean.getOperator(); 
    input    = searchBean.getInput();

    lazyModel = new LazyLoader(sort, category, operator, input);
    lazyModel.setRowCount(listing.size());

    return null;
} 

Я использую @ViewScoped для перечисления записей книги, а также для отображения подробностей записи книги.

У кого-нибудь есть похожие проблемы с Primefaces dataTable?

Ответы [ 3 ]

1 голос
/ 22 апреля 2011

Продолжайте использовать @ViewScoped. Вы не должны использовать @SessionScoped, если у вас нет для этого реальных потребностей.

Чтобы запомнить последнюю страницу, вы должны установить атрибут first метода load. Вы можете сделать это с параметрами запроса. Что-то вроде: yourview.xhtml?f=3.

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

0 голосов
/ 07 марта 2012

Чтобы сохранить выбранную страницу, нужно сделать 2 вещи.

Сначала сделайте область действия управляемого элемента управления.

Второй устанавливает связь между датируемым объектом и объектом UIData.Например, в ваш бэкэнд-компонент поместите

private UIData filasUIData = null;

public UIData getFilasUIData() {
    return filasUIData;
}

public void setFilasUIData(UIData filasUIData) {
    this.filasUIData = filasUIData;
}

Теперь в вашу таблицу данных

<ice:dataTable
    binding="#{yourBean.filasUIData}"

и это все

0 голосов
/ 21 апреля 2011

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

Если вы хотите, чтобы ваш dataTable запоминал последнюю нумерацию страниц после перехода со страницы JSF, то вам нужно создать управляемый компонент SessionScoped.Жизненный цикл управляемого компонента ViewScoped заканчивается после того, как навигация покидает представление.

...