2012-04-21 70 views
1

我使用的是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標註有感激,因爲它似乎是一個好地方做的設置,但它可能是錯誤的,我沒有看到它的任何其他例子,但後來我無法得到任何其他示例工作。

回答

1

解決它。我忘了將dataList屬性包裝在h:form標籤中。現在它工作正常。

+0

標記您的解決方案所接受,所以在瀏覽問題,減少混亂。 – Fallup 2012-04-22 20:33:39

+0

我會的時候它讓我 – Richard 2012-04-23 06:48:33