我使用的是Ajax的分頁,並在第一頁加載罰款DataList控件,顯示5個結果。它知道我有3頁的結果,但是當我點擊進入第二/第三頁時,我得到一個空的列表。Primefaces Datalist中分頁
我的模型延伸LazyDataModel並在第一時間我的頁面加載,我可以在load()方法設置斷點,我可以看到它的詢問結果1-5這是偉大的。但點擊'頁面2'不會導致另一個調用加載方法(雖然它確實會導致大約3次調用我的lazyDataModel字段本身(只是不是其中的加載方法)
對此和儘管大量閱讀和嘗試各種事情,我無法理解很應該如何工作。在展示例子似乎並不十分「完成」給我。
這裏是我的代碼的最相關的位(我認爲)很抱歉的格式:
@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);
}
這種方法並得到我點擊下一頁/上一頁每次執行 /** * @返回lazyModel */ 公共LazyDataModel getLazyModel(){ 返回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標註有感激,因爲它似乎是一個好地方做的設置,但它可能是錯誤的,我沒有看到它的任何其他例子,但後來我無法得到任何其他示例工作。
標記您的解決方案所接受,所以在瀏覽問題,減少混亂。 – Fallup 2012-04-22 20:33:39
我會的時候它讓我 – Richard 2012-04-23 06:48:33