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アノテーションをそこに配置しましたが、間違っている可能性があります。他の例では見ていませんが、他の例も機能しませんでした。 。