簡體   English   中英

在頁面對象上應用過濾器

[英]Apply filter on Page objects

我正在構建一個可以接受“ / search”請求多個參數的API,以便可以使用findAll(Example<T> example)過濾結果。 在第二階段中,我過濾了非平凡類型( Date )以縮小結果范圍,這很好。

現在,在我要實現分頁的地方出現了問題。 Spring數據提供了findAll(Example<T> example, Pageable page)方法,該方法為我創建了一個Page<T>元素,該元素不再適用於我的過濾機制。 盡管Page<T>提供了.filter(Predicate p)函數,但這會將我的Page轉換為Streamable,這不是我需要的分頁。

如何進一步過濾Page<T>對象,而不會導致意外的數據格式呢?

通過首先過濾沒有分頁信息的結果集,然后應用提交的分頁參數,我解決了該問題。

int startIndex = page * size;
int endIndex = (startIndex + size) > myList.size() ? myList.size() : (startIndex + size);
JsonPage<>(myList.subList(startIndex, endIndex), PageRequest.of(page, size), myList.size());

這比創建頁面對象並將其解包以獲取可過濾對象更加直觀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM