Скажем, у меня есть конечная точка GET в контроллере загрузки Spring, который принимает объект как @ RequestParam
@GetMapping(value = "/foos")
public List<Foo> getFoos(@RequestParam FilterParams filterParams) {
return fooDao.getFoos(filterParams);
}
, где FilterParams - это класс, который содержит атрибут List (или любой другой список объектов)
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
, но для меня это неудобно