Spring 3.1.0 mvc绑定modelattribute以及requestbody

时间:2013-07-29 11:12:13

标签: java web-services spring-mvc annotations modelattribute

我是Spring 3.1.0的新手,我正在尝试创建一个可以作为Web应用程序和Web服务公开的应用程序。 对于我使用@ModelAttribute提交表单对象的POST。我还希望通过任何海报公开这种方法,它可以使用与XML相同的对象。

我应该同时使用@ModelAttribute& @RequestBody在一起。我已在@RequestMapping注释中添加了consumemes属性。

1 个答案:

答案 0 :(得分:1)

当您提交表单时,数据以表单编码方式提供,当您使用XML / JSON时,它将作为字符串显示在正文中。您最好将所有常用逻辑放在中间服务层,并在控制器中调用它。因此,它允许您使用表单在现有HTML页面上简单地构建REST服务:

public class Service {
    public void registerUser(User user){
    }
}

@RequestMapping("users")
public class FormController{
    @Autowired private Service service;

    @RequestMapping("register")
    public ModelAndView registerUser(@ModelAttribute User user){
        service.registerUser(user);
    }
}

@RequestMapping("service/v1")
public class RESTController{
    @Autowired private Service service;

    @RequestMapping("users/register")
    public ModelAndView registerUser(@RequestBody User user){
        service.registerUser(user);
    }
}

实际上,您甚至可以将它放在一个控制器中。