2008-09-16 29 views
4

我有一個JSF應用程序,我將其轉換爲使用webservices而不是直接查詢數據庫。有一些極長的列表之前可以通過簡單的SQL查詢輕鬆返回。我想知道如何使用JSF/Web服務實現分頁。有沒有一個很好的設計模式來做頁面Web服務?如何在JavaServer Faces中執行分頁列表?

如果很重要,我目前使用帶有Tomahawk擴展(由MyFaces開發團隊在捐贈給Apache之前創建的一組JSF組件)的JSF的參考實現Apache MyFaces

回答

2

Trinidad有一個支持分頁的表格組件,這可能有所幫助。這並不理想,但對於Seam來說,它的運行效果已經足夠好了,正如Pete Muir的Backing Trinidad's dataTable with Seam博客文章中所述。

如果你沒有找到你喜歡的JSF組件,你需要編寫自己的邏輯來設置參數限制抵消你的EJB-QL(JPA)查詢

2

這取決於您是要執行客戶端還是服務器端分頁。如果是服務器端,您的Web服務將不得不包含一些額外的參數(例如「startFrom」和「pageSize」),這些參數可讓您指定要檢索的數據的哪個「頁面」。您的服務可能還需要返回總體結果大小,以便生成分頁控件。

如果您決定付出太多的努力,您可以在支持bean中進行客戶端分頁(或者爲您完成一個組件),但是如果您正在談論數千個對象,則不推薦使用它!

1

如果您一次從web服務返回所有結果,並且無法將分頁包含到實際的Web服務調用中,則可以嘗試將項目列表設置爲託管bean上的屬性。然後,你可以連接多達上的戰斧DataTable中的「值」屬性:

http://myfaces.apache.org/tomahawk-project/tomahawk/tagdoc/t_dataTable.html

,然後你可以用一個戰斧dataScroller進行分頁了存儲在該屬性物品的清單。下面是該組件的參考,它與dataTable組件效果很好:

http://myfaces.apache.org/tomahawk-project/tomahawk/tagdoc/t_dataScroller.html

您可以包含此DataTable的或作爲一個單獨的成分,它的頁眉/頁腳面內(您將需要指定dataScroller'for'屬性中dataTable的id。

你可以用dataTable做其他整潔的事情,比如排序和切換每行的細節,但是一旦你獲得了基本的分頁工作,就可以實現它。

希望有幫助!

相關問題