Я знаком с тем, как вернуть 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);
}
Есть идеи? Я пытаюсь сделать что-то, что не поддерживается?