Spring MVC @ModelAttribute与REST不兼容

时间:2013-03-01 15:40:38

标签: rest spring-mvc

我正在使用RESTful请求开发一个新的Spring MVC应用程序。应用程序执行标准数据库加载对象,绑定值并保存。为了不丢失表单上不可用的对象值,我使用@ModelAttribute方法在绑定之前预加载对象。

使用网址

加载代理商时

/agency/418

我的@ModelAttribute方法现在可以学习'418'ID了。我的理解是只能处理常规请求属性,因此我的URL需要

/agency/418?id=418

哪种打破了RESTful模式。在发布数据时也是如此。

有人可以评论这个观察......我错过了什么吗?

由于 西蒙

2 个答案:

答案 0 :(得分:1)

您可以使用路径变量来初始化模型属性:

@controller
public controller {
   @modelattribute("model")
   public Entity initentity(@pathvariable integer id) {
     return dao.getentity(id);
   }

   @requestmapping("/{id}")
   public String somerequest(@modelattribute("model") Entity entity) {
      ....
   }      
}

答案 1 :(得分:0)

我们放弃了使用@ModelAttribute来替换Spring 2中曾经是“formBackingObject”的想法。相反,我们使用普通的表单对象类进行表单绑定,然后将值复制到持久化实体。表单对象可以由Spring即时创建,因此我们不再需要带有数据库加载的@ModelAttribute。 Does Spring MVC require copy/paste of Entity to FormObject?中介绍了该主题。