Spring MVC @ModelAttribute 作为方法参数注解
Posted
技术标签:
【中文标题】Spring MVC @ModelAttribute 作为方法参数注解【英文标题】:Spring MVC @ModelAttribute as a method parameter annotation 【发布时间】:2021-04-12 20:57:31 【问题描述】:我在***上碰到一个answer关于spring MVC上@ModelAttribute
的用法,得知它实际上不需要添加到方法的参数中。
我从我们的旧项目中寻找了一些控制器,删除了注释,令人惊讶的是,没有@ModelAttribute
,应用程序仍然可以完美运行。请看下面的例子:
@RequestMapping(method = RequestMethod.POST, value = "/audit/filter")
public String getAuditLogsWithFilter(Model model, AuditLogFilter auditLogFilter, BindingResult bindingResult)
我已经阅读了一些关于它的文章,但我无法理解为什么@ModelAttribute
用于某些方法参数,特别是对于弹簧控制器。
谁能提供一个简单的解释来解释为什么会这样?或者有人可以列举一些我应该将@ModelAttribute
注释添加到我的参数对象的情况吗?
【问题讨论】:
【参考方案1】:如official document 中所述,它是可选的:
请注意,使用@ModelAttribute 是可选的(例如,设置其属性)。默认情况下,任何不是简单值类型(由 BeanUtils#isSimpleProperty 确定)且未被任何其他参数解析器解析的参数都被视为使用 @ModelAttribute 注释。
【讨论】:
以上是关于Spring MVC @ModelAttribute 作为方法参数注解的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC学习—MVC的介绍以及Spring MVC的入门案例
spring mvc中 Circular view path 问题