Я знаю, как вернуть json из моих методов @Controller
с помощью аннотации @ResponseBody
.
Теперь я пытаюсь прочитать некоторые аргументы json в моем контроллере, но пока не повезло. Здесь моя подпись контроллера:
@RequestMapping(value = "/ajax/search/sync")
public ModelAndView sync(@RequestParam("json") @RequestBody SearchRequest json) {
Но когда я пытаюсь вызвать этот метод, spring жалуется, что:
Failed to convert value of type 'java.lang.String' to required type 'com.foo.SearchRequest'
Удаление аннотации @RequestBody
, похоже, не имеет значения.
В ручном разборе работы json, поэтому Джексон должен находиться в пути к классам:
// This works
@RequestMapping(value = "/ajax/search/sync")
public ModelAndView sync(@RequestParam("json") String json) {
SearchRequest request;
try {
request = objectMapper.readValue(json, SearchRequest.class);
} catch (IOException e) {
throw new IllegalArgumentException("Couldn't parse json into a search request", e);
}
Любые идеи? Я пытаюсь сделать что-то, что не поддерживается?