Проблемы в LazyDataModel. Не сбрасывать первый параметр

У меня проблема с LazyDataModel (списком) в JSF. Проблема в следующем:

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

введите здесь описание изображения

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

введите здесь описание изображения

  1. Компонент имеет аннотации: @Component и @ViewScoped.
  2. Список с результатами представляет собой LazyDataModel и перезаписывает методы: load, getRowKey и getRowData.
  3. Версии: JSF 2.0, PrimeFaces 6.1 и Spring 4.0.3.RELEASE.

person agu    schedule 29.09.2017    source источник


Ответы (1)


Проблема в том, что вы поддерживаете одну и ту же модель данных. Вам нужно создать новую модель данных при обновлении списка.

Например, модель данных:

public class MyDataModel extends LazyDataModel<MyEntity> {
   // my datamodel
}

И бин (в данном случае CDI)

@Named
@ViewScoped
public class MyBean implements Serializable {

    private static final long serialVersionUID = 1L;    

    private MyDataModel myDataModel;

    //calling this method, a new datamodel is created and populated
    public void search() {
        List myList = new ArrayList(); //load from database
        loadDatamodel(myList);  
    }

    private void loadDatamodel(List myList) {               
        myDataModel = new MyDataModel(myList);
    }

    public MyDataModel getMyDataModel() {
        return myDataModel;
    }
}

Итак, при каждом поиске создается новая модель данных.

person C.P.O    schedule 29.09.2017