我对Spring的MVC数据绑定功能有一个小问题。 我有以下控制器类:
@Controller
@RequestMapping("/foo")
public class FooController() {
// … some init stuff //
@RequestMapping(value = "/{id}/edit.{format}", method = RequestMethod.POST)
public ModelAndView editFoo(@RequestBody FooItem foo, @PathVariable("format") String format) {
// some code here to edit the FooItem //
}
}
我希望能够针对此方法发布表单数据和XML。为此,我向我的applicationContext.xml
添加了两个邮件转换器:默认formHttpMessageConverter
和XStream编组。
这很好用,但我有一个问题,如果我使用@RequestBody
并在URL上发布表单数据,服务器会响应415错误。如果我删除这个注释,表单数据运行良好,Spring为我创建了对象,但是如果我对它发布XML,我会得到一个空对象。
有没有办法解决这个问题,还是我需要有两种方法来处理这两种传入格式?
提前致谢!
答案 0 :(得分:2)
我认为你需要两种方法。
FormHttpMessageConverter
与@ModelAttribute
提供的数据绑定功能不同,它无法将请求绑定到指定的目标类,只能绑定到MultiValueMap
(请参阅javadoc )。