我将我的消息转换器配置为杰克逊的消息转换器
class Foo{int x; int y}
并在控制器中
@ResponseBody
public Foo method(){
return new Foo(3,4)
}
由此,我期望从服务器返回一个 JSON 字符串 {x:'3',y:'4'} ,而无需任何其他配置。但我的 ajax 请求收到 404 错误响应
如果该方法使用 @ResponseBody 注解,则返回类型将写入响应 HTTP 主体。返回值将使用 HttpMessageConverters 转换为声明的方法参数类型。
我错了吗 ?或者我应该使用序列化程序自己将响应对象转换为 Json 字符串,然后返回该字符串作为响应。(我可以正确地做出字符串响应)还是应该进行一些其他配置?就像为 Foo 类添加注释一样
这是我的conf.xml
<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>
您需要以下内容:
- 设置注解驱动的编程模型:put
<mvc:annotation-driven />
in spring.xml
- 放置 jaskson jar (Maven artifactId 是
org.codehaus.jackson:jackson-mapper-asl
)在类路径中。
-
使用如下:
@RequestMapping(method = { RequestMethod.GET, RequestMethod.POST })
public @ResponseBody Foo method(@Valid Request request, BindingResult result){
return new Foo(3,4)
}
这对我有用。
请注意,
-
@ResponseBody
应用于返回类型,而不是方法定义。
- 你需要
@RequestMapping
注解,以便Spring能够检测到它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)