Spring 3 参考资料告诉我们:
当你把它放在一个方法上时
范围,@ModelAttribute
映射一个
模型属性具体,
带注释的方法参数
我不明白这个魔咒,因为我确定模型对象的别名(如果使用则为键值)ModelMap
作为返回类型)在执行请求处理程序方法后传递给视图。因此,当请求处理程序方法执行时,模型对象的名称无法映射到方法参数。
为了解决这个矛盾我去stackoverflow发现this http://krams915.blogspot.com/2010/12/spring-3-mvc-using-modelattribute-in.html详细的例子。
例子的作者说:
// “personAttribute”模型有
被传递到控制器
联合应用程序
看来,他被Spring的引用迷住了……
为了消除魅力,我在我的环境中部署了他的示例应用程序,并从方法中残酷地删除了 @ModelAttribute 注释MainController.saveEdit()
。结果,应用程序无需任何更改即可运行!所以我的结论是:@ModelAttribute
将 Web 表单的字段值传递到参数的字段不需要注释。然后我坚持这个问题:这是什么意思@ModelAttribute
注解?如果唯一的方法是在视图中为模型对象设置别名,那么为什么这种方法比显式添加对象更好ModelMap
?
重点是@ModelAttribute
是可选的 - 如果参数未注释并且其类型没有特殊含义(即它不是HttpServletRequest
, ModelMap
等等),它被视为@ModelAttribute
-带注释的论点。
So, @ModelAttribute
在两种情况下实际上需要:
有些人倾向于使用@ModelAttribute
没有实际需要来记录参数的含义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)