Json HttpMediaTypeNotAcceptableException与Spring 3.1.2和Jackson 1.9.11
~R 我正在尝试使用Jackson实现springmvcrestjson通道与JSON的自动转换。尽管我按照其他StackOverflow问题中的建议做了所有事情,但我得到了Json HttpMediaTypeNotAcceptableException与Spring 3.1.2和Jackson 1.9.11,json,spring,rest,spring-mvc,jackson,Json,Spring,Rest,Spring Mvc,Jackson,~R 我正在尝试使用Jackson实现springmvcrestjson通道与JSON的自动转换。尽管我按照其他StackOverflow问题中的建议做了所有事情,但我得到了HttpMediaTypeNotAcceptableException,并且我的bean/列表没有转换为JSON。我正在Jetty上运行代码 我已经按照和的指示进行了操作,但它们都不能使我发送bean或列表。两者都返回HTTP状态406。只有返回字符串的方法在HTTP 200中成功 我的方法是: @RequestMappin
HttpMediaTypeNotAcceptableException
,并且我的bean/列表没有转换为JSON。我正在Jetty上运行代码
我已经按照和的指示进行了操作,但它们都不能使我发送bean或列表。两者都返回HTTP状态406。只有返回字符串的方法在HTTP 200中成功
我的方法是:
@RequestMapping(value = "/list", produces = "text/plain; charset=utf-8")
public @ResponseBody List<String> getList() {
return createList();
}
@RequestMapping(value=“/list”,products=“text/plain;charset=utf-8”)
public@ResponseBody List getList(){
返回createList();
}
Spring文件:
<context:component-scan base-package="de.myapp.rest" />
<context:annotation-config />
<mvc:annotation-driven />
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter" />
</list>
</property>
</bean>
添加此部分也无济于事:
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
</list>
</property>
</bean>
请求HTTP头由jQuery生成,如下所示:
接受application/json、text/javascript、/;q=0.01
接受编码gzip,放气
接受语言德德,德;q=0.8,在美国;q=0.5,en;q=0.3
用户代理Mozilla/5.0(Windows NT 6.1;WOW64;rv:18.0)Gecko/20100101
Firefox/18.0
但是,我得到了带有HTML错误消息的HTTP 406以及日志文件中的以下行:
正在解析处理程序[public de.myapp.rest.TestBean]中的异常
de.myapp.rest.Test.getList()]:
org.springframework.web.HttpMediaTypeNotAcceptableException:无法
找到可接受的代表
所以问题是,我缺少什么?为什么jackson转换器未注册/如何调试它?我正在通过jetty:run
运行代码。但是它不应该重要,因为Spring是独立于应用服务器的。在您的@RequestMapping
中,您有products=“text/plain”
,但您的请求头说接受应用程序/json,text/javascript
。没有对手
使用products=“application/json”
或根本不使用products
。它的主要用例是为同一个URL提供多个方法,每个方法都以不同的格式(JSP、JSON、XML…)生成输出。是的,昨天我制作了应用程序/JSON,但后来我为了测试而更改了它。今天我应用了stackoverflow的解决方案,但我忘记了更改产品。