详解SpringMVC注解@ModelAttribute

2025-10-26 13:53:28

1、使用@ModelAttribute注解非请求方法(即非@RequestMapping方法)主要有分两种场景:

1.注解无返回值的方法;2.注解有返回值的方法

使用@ModelAttribute方法的这两种场景都会先于@RequestMapping注解的方法,如果有多个方法用@ModelAttribute标记,则会根据标记顺序依次执行。

详解SpringMVC注解@ModelAttribute

2、1.注解无返回值的方法

在下面代码中在进入@RequestMapping注解test1方法前,会首先调用@ModelAttribute注解的initialModeAttribute方法,如下图所示,在进入test1方法时model中已经有了initialModeAttribute方法设置的studentInfo的对象。

详解SpringMVC注解@ModelAttribute

详解SpringMVC注解@ModelAttribute

3、2.注解有返回值的方法

和注解有返回值的方法类型相似,SpringMVC也会将返回值注入到Model中,注入的value值默认为对象的小写字母,当然也可以通过在@ModelAttribute中指定value,如下图所示指定value为studentInfoWithReturnValue,可以看到注解有返回值的方法时,此方法也会优先于@RequestMapping注解的方法先执行。

详解SpringMVC注解@ModelAttribute

1、使用@ModelAttribute注解方法的参数是最常用的场景,这种场景需要在方法上添加@RequestMapping注解。

主要有两种使用场景:1.在视图中创建一个对象 2.从视图中获取一个对象

详解SpringMVC注解@ModelAttribute

2、1.在视图中创建一个对象

在参数上加上@ModelAttribute注解可以在模型中创建一个对象,如下图所示,通过@ModelAttribute("studentInfo") 可以在model中创建一个studentInfo对象。

通过System.out.println(model.asMap().get("studentInfo").toString());命令可以打印中model中的studentInfo对象信息。

详解SpringMVC注解@ModelAttribute

3、2.从视图中获取一个对象

参考【栏目一】中【步骤2】中的方法利用@ModelAttribute注解方法给Model中创建一个对象studentInfoWithReturnValue,然后在test1方法中通过@ModelAttribute(value = "studentInfoWithReturnValue") Student student可以获得Model中注入的对象studentInfoWithReturnValue

详解SpringMVC注解@ModelAttribute

1、用@ModelAttribute注解@RequestMapping方法的场景很少会用到,因为这种场景下的返回值就不是视图了而是ModelAttribute的value值,如果不是视图,那么@RequestMapping注解的方法也失去了本身的含义。

详解SpringMVC注解@ModelAttribute

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:183
  • 阅读量:188
  • 阅读量:39
  • 阅读量:176
  • 阅读量:89
  • 猜你喜欢