Я знаком с тем, как вернуть json из моих методов @Controller
с помощью аннотации @ResponseBody
.
Теперь я пытаюсь прочитать кое-что json в мой контроллер, но пока не повезло. Вот подпись моего контроллера:
@RequestMapping(value = "/ajax/search/sync")
public ModelAndView sync(@RequestParam("json") @RequestBody SearchRequest json) {
Но когда я пытаюсь вызвать этот метод, Spring жалуется, что:
Не удалось преобразовать значение типа java.lang.String в требуемый тип 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);
}
Есть идеи? Я пытаюсь сделать что-то, что не поддерживается?