说我在Spring Boot控制器中有一个GET端点,它接受一个对象作为@RequestParam
@GetMapping(value = "/foos")
public List<Foo> getFoos(@RequestParam FilterParams filterParams) {
return fooDao.getFoos(filterParams);
}
其中FilterParams是一个包含List属性(或任何其他Objects列表)的类
public class FilterParams {
public List<Bar> bars;
}
并且Bar是一个枚举(对于此示例)
public enum Bar {
Baz, Zap
}
[如果我们在此终结点上发布GET请求,并带有以“,”分隔的filterParameter属性列表,即curl -X GET localhost:8080/foos?bars=BAZ,ZAP
,Spring无法将其解析为列表,并尝试将一个单个值BAZ,ZAP
反序列化为枚举。如果不是枚举,它的行为也将相同,即将参数id = 1,2反序列化为字符串列表的单个元素。是否有可能忽略此行为?如果是这样,一个人将如何实现这一目标?
我确实知道我可以通过将多个参数声明为/foos?bars=BAZ&bars=ZAP
来实现此目的,但对我来说并不方便
删除@RequestParam
批注并在FilterParams
中添加构造函数>
@GetMapping(value = "/foos")
public List<Foo> getFoos(FilterParams filterParams) {
return fooDao.getFoos(filterParams);
}