我正在使用Spring 3.0创建一个RESTful网站。我正在使用ContentNegotiatingViewResolver
以及HTTP消息转换器(如JSON为MappingJacksonHttpMessageConverter
,XML为MarshallingHttpMessageConverter
等)。我能够成功获取XML内容,如果我在url的最后一个使用.xml后缀,并且在URL中使用带有.json后缀的JSON时也是如此。
从控制器获取XML / JSON内容不会对我产生任何问题。但是,如何在同一个Controller方法中使用请求主体发布XML / JSON?
例如
@RequestMapping(method=RequestMethod.POST, value="/addEmployee")
public ModelAndView addEmployee(@RequestBody Employee e) {
employeeDao.add(e);
return new ModelAndView(XML_VIEW_NAME, "object", e);
}
答案 0 :(得分:11)
您应该考虑不使用View来返回JSON(或XML),而是使用@ResponseBody注释。如果员工应该返回什么,那么Spring和MappingJacksonHttpMessageConverter将自动将您的Employee对象转换为JSON,如果您使用这样的方法定义和实现(注意,未经测试):
@RequestMapping(method=RequestMethod.POST, value="/addEmployee")
@ResponseBody
public Employee addEmployee(@RequestBody Employee e) {
Employee created = employeeDao.add(e);
return created;
}