2

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

我应该同时使用两者@ModelAttribute@RequestBody?我已经在@RequestMapping注释中添加了 consumes 属性。

4

1 回答 1

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);
    }
}

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

于 2013-07-29T12:43:40.977 回答