@RequestParam对象中的枚举列表

问题描述 投票:0回答:1

说我在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来实现此目的,但对我来说并不方便

java spring-boot rest spring-mvc enums
1个回答
0
投票

删除@RequestParam批注并在FilterParams中添加构造函数>

@GetMapping(value = "/foos")
public List<Foo> getFoos(FilterParams filterParams) {
  return fooDao.getFoos(filterParams);
}
© www.soinside.com 2019 - 2024. All rights reserved.