我试图传递一堆id以创建过滤器。
传入的请求看起来像(忽略分页的东西,效果很好)
http://localhost:8080/news-items?filter%5B%5D=09c731de-7ed8-385d-849c-f4d6535137ab&filter%5B%5D=dd1ba187-2df9-3985-ad1c-a4cde2dfe669&modelPath=controller.newsItems&page=0&per_page=25
过滤器参数等于ID,但有一堆,例如:
filter: [
"09c731de-7ed8-385d-849c-f4d6535137ab",
"dd1ba187-2df9-3985-ad1c-a4cde2dfe669"
],
我似乎无法收集控制器中的过滤器。目前我有
public String getFeeds(@RequestParam(value = "filter", required = false) MultiValueMap<String, String> filter, @RequestParam(value = "page", required = false) int page, @RequestParam(value = "per_page", required = false) int perPage) {
log.info("Filter: {}", filter);
}
但是过滤器始终为null。我尝试过使用String而不是map,但它也总是为null。
如何以这种方式接受未知数量的参数?我觉得这很简单,但我只是错过了明显的......
答案 0 :(得分:0)
事实证明这很简单,就像我想的那样。在@RequestParam
中使用地图时,它会占用所有传入的参数,无论它们是什么。
所以我可以告诉他们正确的解决办法是做一些像
这样的事情@GetMapping(produces = APPLICATION_JSON)
public String getFeeds(@RequestParam MultiValueMap<String, String> params) {
params.forEach(//something);
}
答案 1 :(得分:0)
我认为你要找的只是一个数组或一个List,如下所示:
public String getFeeds(@RequestParam(value = "filter", required = false) List<String> filters) { ... }