从@RequestParam Map过滤与分页相关的查询参数Map <string,string =“”>

时间:2019-02-28 15:35:50

标签: java spring-boot spring-mvc pagination

我的@RestController之一看起来像这样。

  @GetMapping("/summaries/")
  public Page<Summary> getSummaries(
      @RequestParam Map<String, String> params, 
      Pageable pageable) {
    return summaryService.findMatchingSummaries(params, token, pageable);
  }

在上面的代码段中,summaryService应该返回所有与适当的键值对匹配的记录。而且我使用了Map,以便API可以采用任何一组键值对来搜索数据库。

当我调用如下所示的API时,

http://localhost:8080/summaries/?attributeName1=xx&attributeName2=yyy

它会从数据库中退回前50条记录。

但是当我使用以下分页详细信息调用此API时,

http://localhost:8080/summaries/?attributeName1=xx&attributeName2=yyy&page=1&size=100

我没有得到任何结果,因为现在逻辑试图使用4个参数(包括分页参数pagesize)进行搜索。

立即想到的是如果在地图中找到这些属性,则将其过滤掉。看起来像这样。

void clearPaginationDetails(Map<String,String> params){
    params.remove("page");
    params.remove("sort");
    params.remove("size");
}

但同样,我也必须在其他两个地方执行相同的解决方法。

配置 here 之类的分页参数也不是一种选择,因为这会导致子系统之间的混乱。

是否有一个配置选项可以从请求中过滤掉这些查询参数,同时直接将其注入到Map<String, String> params中?

0 个答案:

没有答案