2013-07-29 75 views
2

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

我应该使用两个@ModelAttribute & @RequestBody在一起。我已经在@RequestMapping注释中添加了消耗属性。

回答

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

事实上,你甚至可以把它放进一个控制器。

+0

嘿谢谢,但我已经想过这个,但是这会像再次创建一个类似的方法,这实际上打败了整个讨论的目的。我不太确定单独的方法是否是唯一的出路。 。 – vaibhav

相关问题