1

Ajaxページ付けのデータリストを使用していますが、最初のページが正常に読み込まれ、5つの結果が表示されます。3ページ分の結果があることはわかっていますが、2番目と3番目のページをクリックすると、空のリストが表示されます。

私のモデルはLazyDataModelを拡張し、ページが初めて読み込まれるときに、load()メソッドにブレークポイントを設定でき、結果1〜5を要求していることがわかります。これはすばらしいことです。ただし、「ページ2」をクリックしても、loadメソッドが再度呼び出されることはありません(ただし、lazyDataModelフィールド自体が約3回呼び出されます(ただし、その中のloadメソッドは呼び出されません)。

これは初めてで、たくさん読んで色々なことを試してみましたが、どうしたらいいのかよくわかりません。ショーケースの例は、私には完全に「完全」ではないようです。

これが私のコードの最も関連性のある部分です(私は思います)。フォーマットについて申し訳ありません:

@PostConstruct
public void LoadData() {
  lazyModel = new LazyDataModel<MessageboardThread>() {

  @Override
  public List<MessageboardThread> load(int first, int pageSize, String sortField, SortOrder so, Map<String, String> map) {
    List<MessageboardThread> result = new ArrayList<MessageboardThread>();

    try {
        result = mbDao.findAll(pageSize, first);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return result;
  }
};
getLazyModel().setRowCount(mbDao.count());
getLazyModel().setPageSize(pageSize);
}    

このメソッドは、次/前のページをクリックするたびに実行されます/ ** * @return the lazyModel * / public LazyDataModel getLazyModel(){return lazyModel; }

そしてこれは私のxhtmlファイルです

          <p:dataList value="#{messageboardBean.lazyModel}" var="thread" id="threads"  
                paginator="true" rows="5" effectSpeed="fast"  
                paginatorTemplate="{PreviousPageLink} {CurrentPageReport} {NextPageLink} {RowsPerPageDropdown}"  
                rowsPerPageTemplate="5,10,15" type="none"
                paginatorPosition="bottom">  

                    <f:facet name="header">  
                        Conversations 
                    </f:facet>  

                    <p:column>  
                        <h:outputText value="#{thread.title}" style="margin-left:10px" />  
                        <br />  
                    </p:column>  
            </p:dataList> 

私は困惑しています助けてくれて本当に感謝しています

PSセットアップを行うのに適した場所のようだったので、@ PostContructアノテーションをそこに配置しましたが、間違っている可能性があります。他の例では見ていませんが、他の例も機能しませんでした。 。

4

1 に答える 1

1

解決しました。dataList属性をh:formタグでラップするのを忘れました。今は問題なく動作します。

于 2012-04-22T19:30:45.793 に答える