у меня есть пружинный веб-приложение 4.3.4 с REST конечной точки:пружины для дополнительных многозначных параметров
@RequestMapping(value = "/doStuff", method = RequestMethod.GET)
public ResponseEntity<MyDTO[]> findSomething(@RequestParam(value = "status")
Optional<Set<EnumStatus>> statusFilter)
{
[...];
}
Я называю это так: http://localhost:8080/rest/api/doStuff?status=CREATED&status=ACTIVATED
Я ожидал, что значение StatusFilter быть:
Optional { Set {EnumStatus.CREATED, EnumStatus.ACTIVATED}}
Вместо этого я получил:
Optional { Set {EnumStatus.CREATED}}
Выключается Весна использует ArrayToObjectConverter, уменьшая два значения до одного.
Есть ли способ обойти это? Является ли это ошибкой или ожидаемым поведением?
http://stackoverflow.com/questions/2602043/rest-api-best-practice -how-to-accept-list-of-parameter-values-as-input – blank
Попробуйте удалить «Необязательно» и оставьте только «Set» и установите 'required = false' в' @ RequestParam' вместо использования ' Optional'. (Вы также можете попробовать новую версию 4.3.x, так как 4.3.6 является самой последней). Если посмотреть на код для 4.3.4 (и 5.0.0.M4), там может быть небольшая ошибка, которая рассматривается в более новых версиях. –
Да, это то, что я сделал, и он работает, но он чувствует себя грязным, потому что все остальное является нулевым с опцией. Поэтому «его ошибка» - это ответ, который я искал в этом случае, спасибо! Отправьте его, и я отметю его как принято. –