PrimeFaces lazydatamodel метод загрузки не вызывается

Я не понимаю, почему мой метод загрузки не вызывается в lazydatamodel моей таблицы простых лиц. Моя страница HTML выглядит так

<h:form id="myForm">
    <p:dataTable value="#{myBean.configDataModel}"
                            id="configTable" var="config" paginator="true" rows="10"
                            selectionMode="single"
                            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                            rowsPerPageTemplate="5,10,20">
    .
    .
</h:form>

Мой Bean-код выглядит следующим образом и выдает операторы system.out.println, но я заметил, что он не вызывается.

public class MyBean{
    // private List<MyBean> configList;
    private LazyDataModel<MyBean> configDataModel;

    @SuppressWarnings("serial")
    public LazyDataModel<MyBean> getConfigDataModel() {
        if (configDataModel == null) {
            configDataModel = new LazyDataModel<MyBean>() {

                @Override
                public List<MyBean> load(int arg0, int arg1, String arg2,
                        SortOrder arg3, Map<String, String> arg4) {
                    System.out.println("Here!!!!!");
                    return null;
                }
            };

        }
        return configDataModel;
    }
    public void setConfigDataModel(LazyDataModel<MyBean> configDataModel) {
        this.configDataModel = configDataModel;
    }
}

Что может быть причиной?

2 ответа

Решение

Начиная с PrimeFaces 3.3, вам нужно явно установить lazy атрибут повторяющегося компонента true для того, чтобы включить поддержку LazyDataModel,

<p:dataTable ... lazy="true">

Смотрите также:

  1. Если вы IE, не забудьте проверить, в каком так называемом "режиме совместимости" он работает. У меня возникли очень досадные проблемы с тем, что lazy datatable не может вызвать метод load после того, как я набрал текст в поле фильтра. Спустя много времени, я понял, что браузер работает в режиме по умолчанию 7. Ленивая загрузка данных работает в режимах 8, 9, 10.
  2. Если ваш ленивый объект данных находится в диалоговом окне, то обязательно поместите диалоговое окно внутри формы, в противном случае ввод значений в поле фильтра не будет соответствовать методу load.
Другие вопросы по тегам