我正在使用RESTful请求开发一个新的Spring MVC应用程序。应用程序执行标准数据库加载对象,绑定值并保存。为了不丢失表单上不可用的对象值,我使用@ModelAttribute方法在绑定之前预加载对象。
使用网址
加载代理商时 /agency/418
我的@ModelAttribute方法现在可以学习'418'ID了。我的理解是只能处理常规请求属性,因此我的URL需要
/agency/418?id=418
哪种打破了RESTful模式。在发布数据时也是如此。
有人可以评论这个观察......我错过了什么吗?
由于 西蒙
答案 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?中介绍了该主题。