java - Spring 3.1.0 mvc 绑定(bind) modelattribute 以及 requestbody

标签 java web-services spring-mvc annotations modelattribute

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

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

最佳答案

当您提交表单时,数据以表单编码的方式出现,而当您使用 XML/JSON 时,数据以字符串形式出现在正文中。您最好将所有公共(public)逻辑放在中间服务层并在您的 Controller 中调用它。因此,它允许您使用表单在现有 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);
    }
}

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

关于java - Spring 3.1.0 mvc 绑定(bind) modelattribute 以及 requestbody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17922546/

相关文章:

java - 为什么在打印第一个 if case 后 switch case 没有中断?

java - 如何创建具有不可修改键的 Java Map<String,String> ?

web-services - 如何停止这个 javax.xml.ws.Endpoint 服务

java - WebService代理类

.net - 如何使用带有客户端证书的 HTTPS 传输使用证书对 WCF 消息进行签名

java - 在 Spring MVC 中重命名返回到 ResponseBody 的 JSON 对象

java - 如何加快excel读写速度

java - Jaxb 是否可以解码到接口(interface)?

java - Spring MVC @RequestParam 值未按预期从 URI 中提取

java - org.springframework.beans.factory.BeanCreationException : Injection of autowired dependencies failed;