在Spring 3.0.5中并将其编码为JSON服务,这个日志输出试图告诉我什么?

时间:2011-03-13 22:47:29

标签: json spring spring-mvc jackson

使用Spring 3.0.5,我试图以JSON格式返回一个字符串列表。

  • 我阅读了帖子spring-mvc-json-response

  • 我可以使用jackson-mapper代码1.4.2并且它在我的类路径上。

  • 我也在使用符合<context:component-scan base-package="com.funfun.foofoo2" />要求的<mvc:annotation-driven>

  • 我回来了List<String>,虽然我也尝试了一个豆。

  • 当我将原始JSON作为String返回时,它可以工作。

以下日志输出告诉我什么?是说它无法找到Jackson 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 个答案:

答案 0 :(得分:1)

基本上,此异常(HttpMediaTypeNotAcceptableException)的含义是客户端在其HTTP请求中指定了accepts标头,并且可能不接受JSON。你是如何提出这个要求的? AJAX通话?如果是这样,请使用Firebug或其他东西检查XHR并查看接受标头的设置。

答案 1 :(得分:1)

您需要的不仅仅是jackson-mapper,还需要jackson-core,最好比相当旧的1.4.x版本更新。

答案 2 :(得分:0)

只需检查HTTP请求标头中的Accept param即可。如果您使用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");

此致

大卫。