В Spring 3.0.5 и кодировании его для обслуживания JSON, что этот вывод журнала пытается мне сказать? - PullRequest
0 голосов
/ 14 марта 2011

Используя Spring 3.0.5, я пытаюсь вернуть список строк в формате JSON.

  • Я прочитал пост spring-mvc-json-response

  • У меня есть код Джексона-Маппера 1.4.2, и он у меня на пути к классам.

  • Я также использую <context:component-scan base-package="com.funfun.foofoo2" />, который должен удовлетворять требованию <mvc:annotation-driven>.

  • Я возвращаю List<String>, хотя я тоже пробовал только боб.

  • Когда я возвращаю необработанный JSON в виде строки, он работает.

Что говорит следующий вывод журнала? Это говорит о том, что он не может найти Джексона JSON Mapper и, следовательно, MappingJacksonHttpMessageConverter не загружен?

17:19:01,037 DEBUG [AnnotationMethodHandlerExceptionResolver:132] Resolving exception from handler [com.funfun.foofoo2.CarModelsController@181fa4b]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

17:19:01,037 DEBUG [ResponseStatusExceptionResolver:132] Resolving exception from handler [com.funfun.foofoo2.CarModelsController@181fa4b]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

17:19:01,037 DEBUG [DefaultHandlerExceptionResolver:132] Resolving exception from handler [com.funfun.foofoo2.CarModelsController@181fa4b]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
17:19:01,053 DEBUG [DispatcherServlet:824] Null ModelAndView returned to DispatcherServlet with name 'appServlet': assuming HandlerAdapter completed request handling

Обновление: Я использую jQuery getJSON. В Firefox Firebug заголовок выглядит как application / json. Метод Spring ограничен только обработкой запросов для JSON.

Ответы [ 3 ]

1 голос
/ 14 марта 2011

Вам нужно больше, чем jackson-mapper, вам также нужно jackson-core, и желательно что-то более новое, чем довольно старые версии 1.4.x.

1 голос
/ 14 марта 2011

В основном это исключение (HttpMediaTypeNotAcceptableException) означает, что клиент указывает заголовок accepts в своем HTTP-запросе и, вероятно, не принимает JSON.Как вы делаете этот запрос?AJAX позвонить?Если это так, используйте Firebug или что-то еще, чтобы проверить XHR и посмотреть, на что установлен заголовок accept.

0 голосов
/ 04 апреля 2011

Просто проверьте параметр Accept в заголовке вашего HTTP-запроса.Если вы используете XMLHttpRequest для вызова ajax, не забудьте изменить requestHeader следующим образом:

xmlhttp.open("POST", custom_url, this.async);
xmlhttp.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,*/*;q=0.8");

С уважением,

Дэвид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...