2014-11-03 81 views
1

我想在我的應用程序的數據表中使用延遲加載。我瀏覽了Primefaces展示網站上的示例:http://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml。但是我不明白這是一個懶加載的例子。延遲加載展示primefaces

應用程序第一次加載頁面時,他仍然得到200輛車。我希望(因爲我想在我的應用中以這種方式實現延遲加載),第一次應用程序加載此頁面時,他只加載第一頁上有多行的條目,然後當用戶單擊第二頁下一個x條目被加載等等。因爲我有一個潛在的巨大的數據表(超過一百萬條記錄),我顯然不想加載一百萬條記錄,並且讓用戶等待5分鐘,如果他只需要前20條記錄中的某條記錄。

編輯:更糟的是,當我使用viewscoped的spring backing bean時,我注意到他每次用戶切換到另一個頁面時都會加載所有記錄。我甚至會從不使用延遲加載的方式使用數據表而受益。

回答

0

這個例子只是爲了說明它是如何工作的。它是由你自己來實現方法:

public List<?> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters)

這個人是你必須擴展LazyDataModel類的一部分。

如果您以只能獲取頁面所需記錄(即所有記錄從firstfirst+pageSize)的方式實現此方法,那麼您將擁有適當的延遲加載。展示櫃沒有可用的數據庫實施示例。

+0

但是,如何展示一個懶惰加載的數據表示例?爲什麼他們沒有顯示一個實際上是懶惰加載的例子? service.createCars(200)仍然創建200輛而不是20輛 – 2014-11-03 09:00:37

+3

它顯示了前端如何在延遲加載和分頁的情況下正常工作。因爲他們需要某種數據源來顯示他們創建汽車庫所需的分頁。也許這不是他們身邊的最好例子。例如,如果他們例如把所有汽車放在一個應用程序範圍的bean(它像數據庫一樣),然後查詢該bean,而不是初始化在viewcoped bean中的汽車列表。 – ChristopherS 2014-11-03 09:06:05