【发布时间】:2011-06-09 16:55:08
【问题描述】:
Spring 3 参考告诉我们:
当你把它放在一个方法上时 参数,
@ModelAttribute映射一个 模型属性到特定的, 带注释的方法参数
我不明白这个魔法,因为我确定模型对象的别名(如果使用ModelMap 作为返回类型,则为键值)在执行请求处理程序方法后传递给视图。因此,当请求处理方法执行时,模型对象的名称不能映射到方法参数。
为了解决这个矛盾,我去了stackoverflow,找到了this的详细例子。 例子的作者说:
// "personAttribute" 模型有 已从 JSP
看来,他被Spring参考迷住了……
为了消除魅力,我在我的环境中部署了他的示例应用程序,并残忍地从方法 MainController.saveEdit() 中删除了 @ModelAttribute 注释。结果,应用程序无需任何更改即可运行!所以我得出结论:@ModelAttribute 注释不需要将 Web 表单的字段值传递给参数的字段。然后我坚持这个问题:@ModelAttribute 注释的意思是什么?如果唯一的方法是在 View 中为模型对象设置别名,那么为什么这种方式比将对象显式添加到 ModelMap 更好?
【问题讨论】:
标签: java spring spring-mvc annotations