使用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请求。
答案 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");
此致
大卫。