Проблемы в LazyDataModel. Не сбрасывать первый параметр
У меня проблема с LazyDataModel (список) в JSF. Проблема в следующем:
У меня есть HTML с формой поиска и списком результатов этого поиска. Я делаю первый поиск и показываю в этом разбитом на страницы списке, когда я перехожу к страницам, например, на четвертой странице:
Если я реализую новый поиск, в этом новом результате список списывается со страницы 4. Сначала параметр не сбрасывается при каждом новом поиске. Зачем?
- Боб имеет аннотации: @Component и @ViewScoped.
- Список с результатами представляет собой LazyDataModel и перезаписывает методы: load, getRowKey и getRowData.
- Версии: JSF 2.0, PrimeFaces 6.1 и Spring 4.0.3.RELEASE.
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;
}
}
Таким образом, при каждом поиске создается новая модель данных.