Картирование успокоительных запросов Ajax к весне

У меня есть этот кусок кода:

@RequestMapping(value = "/test.json", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody Object[] generateFile(@RequestParam String tipo) {
    Object[] variaveis = Variavel.getListVariavelByTipo(tipo);
    return variaveis;
}

Насколько я знаю, он должен взять запрос test.json? Tipo=H и вернуть JSON-представление Variavel[], однако, когда я делаю такой запрос, я получаю:

HTTP-статус 406 -

Тип Статус отчета

сообщение

описание Ресурс, идентифицированный этим запросом, способен генерировать ответы только с характеристиками, не приемлемыми в соответствии с заголовком запроса "принять" ()

Используя следующую функцию, я могу получить ожидаемый JSON:

@RequestMapping(value = "/teste.json")
public void testeJson(Model model, @RequestParam String tipo) {
    model.addAttribute("data", Variavel.getListVariavelByTipo("H"));
}

Что я делаю не так?

1 ответ

Решение

@RequestBody/@ResponseBody аннотации не используют обычные средства разрешения, они используют свои собственные HttpMessageConverters. Чтобы использовать эти аннотации, вы должны настроить эти конвертеры в AnnotationMethodHandlerAdapter, как описано в ссылке (вам, вероятно, нужно MappingJacksonHttpMessageConverter).

Другие вопросы по тегам