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怎么存cookie

Spring MVC系列初识Spring MVC

spring mvc中 Circular view path 问题

Spring MVC 框架学习---- 我的第一个 Spring MVC 程序

springmvc 3.0啥时间发部