7

Primefacesテーブルのlazydatamodelでloadメソッドが呼び出されない理由がわかりません。私のxhtmlページは次のようになります

<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;
    }
}

原因は何でしょうか?

4

2 に答える 2

25

PrimeFaces 3.3以降、のサポートを有効にするにlazyは、繰り返しコンポーネントの属性を明示的に設定する必要があります。trueLazyDataModel

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

参照:

于 2012-11-06T02:28:42.083 に答える
0
  1. IEの場合は、どのいわゆる「互換モード」が使用されているかを確認してください。フィルタフィールドにテキストを入力した後、レイジーデータテーブルがloadメソッドを呼び出せないという非常に厄介な問題が発生しました。多くの時間を無駄にした後、私は最終的にブラウザがデフォルトモード7で実行されていることに気付きました。データテーブルの遅延読み込みはモード8、9、10で機能します
  2. 遅延データテーブルがダイアログ内にある場合は、必ずフォーム内にダイアログを配置してください。そうしないと、フィルターフィールドに値を入力してもloadメソッドに送信されません。
于 2017-11-07T07:34:32.127 に答える