〜 - [R
我正在尝试使用Jackson自动转换为JSON的Spring MVC REST JSON通道。虽然我正在按照其他StackOverflow问题中的建议执行所有操作,但我得到HttpMediaTypeNotAcceptableException
并且我的bean /列表未转换为JSON。我在 Jetty 上运行代码。
我已经按照UTF-8 encoding problem in Spring MVC,Spring 3.0 making JSON response using jackson message converter和Jackson annotations being ignored in Spring的说明进行了操作,但是没有一个能让我既不发送bean也不发送List<String>
。两者都返回HTTP状态406.只有返回String的方法才能成功使用HTTP 200。
我的方法是:
@RequestMapping(value = "/list", produces = "text/plain; charset=utf-8")
public @ResponseBody List<String> getList() {
return 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 Accept-Encoding gzip,deflate Accept-Language de-de,de; q = 0.8,en-us; q = 0.5,en; q = 0.3 用户代理Mozilla / 5.0(Windows NT 6.1; WOW64; rv:18.0)Gecko / 20100101 火狐/ 18.0
但是,我收到带有HTML错误消息的HTTP 406,以及日志文件中的以下行:
解决处理程序[public de.myapp.rest.TestBean]中的异常 de.myapp.rest.Test.getList()]: org.springframework.web.HttpMediaTypeNotAcceptableException:不能 找到可接受的代表
所以问题是,我在这里缺少什么?为什么没有注册jackson转换器/我该如何调试它?我正在通过jetty:run
运行代码。但是不应该重要,因为Spring是独立于应用程序服务器的。
答案 0 :(得分:1)
在@RequestMapping
produces = "text/plain"
Accept application/json, text/javascript
,您的请求标题为produces="application/json"
。没有比赛。
使用produces
或根本不使用{{1}}。它的主要用例是为同一个URL提供多个方法,每个方法以不同的格式(JSP,JSON,XML ......)生成输出。