【发布时间】:2019-01-07 13:36:01
【问题描述】:
是否可以使用 Spring Boot 将查询参数映射到动态名称?我想映射这些参数:
/products?filter[name]=foo
/products?filter[length]=10
/products?filter[width]=5
我可以做这样的事情,但它需要知道每个可能的过滤器,我希望它是动态的:
@RestController
public class ProductsController {
@GetMapping("/products")
public String products(
@RequestParam(name = "filter[name]") String name,
@RequestParam(name = "filter[length]") String length,
@RequestParam(name = "filter[width]") String width
) {
//
}
}
如果可能的话,我正在寻找允许用户定义任意数量的可能过滤器值的东西,并且这些过滤器值可以通过 Spring Boot 映射为 HashMap。
@RestController
public class ProductsController {
@GetMapping("/products")
public String products(
@RequestParam(name = "filter[*]") HashMap<String, String> filters
) {
filters.get("name");
filters.get("length");
filters.get("width");
}
}
在this question 上发布的答案建议使用@RequestParam Map<String, String> parameters,但这将捕获所有 查询参数,而不仅仅是匹配filter[*] 的那些。
【问题讨论】:
-
相关但他们从未真正解决它。
标签: java spring-boot spring-restcontroller query-parameters