如何在Spring中配置端点以接受表单数据和XML请求体?

时间:2010-11-26 13:19:19

标签: data-binding spring-mvc

我对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,我会得到一个空对象。

有没有办法解决这个问题,还是我需要有两种方法来处理这两种传入格式?

提前致谢!

1 个答案:

答案 0 :(得分:2)

我认为你需要两种方法。

FormHttpMessageConverter@ModelAttribute提供的数据绑定功能不同,它无法将请求绑定到指定的目标类,只能绑定到MultiValueMap(请参阅javadoc )。