我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringMVC中@ModelAttribute注解的使用教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringMVC中@ModelAttribute注解的使用教程

前言

@ModelAttribute最主要的作用是将数据添加到模型对象中,用于视图页面展示时使用。

@ModelAttribute等价于 model.addAttribute("attributeName", abc); 但是根据@ModelAttribute注释的位置不同,和其他注解组合使用,致使含义有所不同。具体区别如下:

1.@ModelAttribute注释方法

例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。

(1)@ModelAttribute注释void返回值的方法


 @Controller 
 public class HelloWorldController { 
     @ModelAttribute 
     public void populateModel(@RequestParam String abc, Model model) { 
          model.addAttribute("attributeName", abc); 
       } 
 
     @RequestMapping(value = "/helloWorld") 
     public String helloWorld() { 
        return "helloWorld"; 
         } 
  }

这个例子,在获得请求/helloWorld 后,populateModel方法在helloWorld方法之前先被调用,它把请求参数(/helloWorld?abc=text)加入到一个名为attributeName的model属性中,在它执行后 helloWorld被调用,返回视图名helloWorld和model已由@ModelAttribute方法生产好了。

(2)@ModelAttribute注释返回具体类的方法


 @ModelAttribute 
 public Account addAccount(@RequestParam String number) { 
     return accountManager.findAccount(number); 
 } 

这种情况,model属性的名称没有指定,它由返回类型隐含表示,如这个方法返回Account类型,那么这个model属性的名称是account。

这个例子中model属性名称有返回对象类型隐含表示,model属性对象就是方法的返回值。它无须要特定的参数。

(3)@ModelAttribute(value="")注释返回具体类的方法


 @Controller 
 public class HelloWorldController { 
     @ModelAttribute("attributeName") 
     public String addAccount(@RequestParam String abc) { 
         return abc; 
       } 
 
     @RequestMapping(value = "/helloWorld") 
     public String helloWorld() { 
         return "helloWorld"; 
           } 
    }

这个例子中使用@ModelAttribute注释的value属性,来指定model属性的名称。model属性对象就是方法的返回值。它无须要特定的参数。

(4)@ModelAttribute和@RequestMapping同时注释一个方法


 @Controller 
 public class HelloWorldController { 
     @RequestMapping(value = "/helloWorld.do") 
     @ModelAttribute("attributeName") 
     public String helloWorld() { 
          return "hi"; 
       } 
   }

这时这个方法的返回值并不是表示一个视图名称,而是model属性的值,视图名称由RequestToViewNameTranslator根据请求"/helloWorld.do"转换为逻辑视图helloWorld。

Model属性名称有@ModelAttribute(value=””)指定,相当于在request中封装了key=attributeName,value=hi。

2.@ModelAttribute注释一个方法的参数

(1)从model中获取


 @Controller 
 public class HelloWorldController { 
     @ModelAttribute("user") 
     public User addAccount() { 
         return new User("jz","123"); 
      } 
 
     @RequestMapping(value = "/helloWorld") 
     public String helloWorld(@ModelAttribute("user") User user) { 
            user.setUserName("jizhou"); 
            return "helloWorld"; 
         } 
   }

在这个例子里,@ModelAttribute("user") User user注释方法参数,参数user的值来源于addAccount()方法中的model属性。

此时如果方法体没有标注@SessionAttributes("user"),那么scope为request,如果标注了,那么scope为session

(2)从Form表单或URL参数中获取(实际上,不做此注释也能拿到user对象)


 @Controller 
 public class HelloWorldController { 
     @RequestMapping(value = "/helloWorld") 
     public String helloWorld(@ModelAttribute User user) { 
         return "helloWorld"; 
      } 
 }

它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用。我们此时可以在视图页面使用${user.username}来获取绑定的命令对象的属性。

3.@ModelAttribute注释一个方法的返回值

放在方法的返回值之前,添加方法返回值到模型对象中,用于视图页面展示时使用。


 @Controller 
 public class HelloWorldController {

     @RequestMapping(value = "/helloWorld") 
     public @@ModelAttribute("user2") User helloWorld(@ModelAttribute User user) { 
         return new User(); 
      } 
 }

大家可以看到返回值类型是对象类型,而且通过 @ModelAttribute("user2") 注解,此时会添加返回值到模型数据( 名字为user2 ) 中供视图展示使用

@ModelAttribute  注解的返回值会覆盖 @RequestMapping  注解方法中的 @ModelAttribute  注解的同名命令对象

总结

到此这篇关于SpringMVC中@ModelAttribute注解使用的文章就介绍到这了,更多相关@ModelAttribute注解使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringMVC中@ModelAttribute注解的使用教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spring中@ModelAttribute注解如何使用

这期内容当中小编将会给大家带来有关Spring中@ModelAttribute注解如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.@ModelAttribute注释方法   例子(1),(2),
2023-06-02

spring学习教程之@ModelAttribute注解运用详解

本文主要给大家介绍了关于java中@ModelAttribute使用的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍:一、@ModelAttribute注释方法 例子(1),(2),(3)类似,被@ModelAttribute注
2023-05-31

@ModelAttribute注解在spring mvc中的使用方法

@ModelAttribute注解在spring mvc中的使用方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在spring mvc中非常重要的注解@Mod
2023-05-31

spring mvc中注解@ModelAttribute的妙用分享

前言本文主要给大家介绍了关于spring mvc注解@ModelAttribute妙用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。在Spring mvc中,注解@ModelAttribute是一个非常常用的注
2023-05-31

SpringMVC中@InitBinder注解怎么使用

这篇文章主要讲解了“SpringMVC中@InitBinder注解怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringMVC中@InitBinder注解怎么使用”吧!简介@Co
2023-07-02

@RequestParam注解如何在SpringMVC中使用

这期内容当中小编将会给大家带来有关@RequestParam注解如何在SpringMVC中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。自SpringMVC4.2之后,RequestParam内部有4
2023-05-31

SpringMVC教程之json交互使用详解

json数据交互1.1 @RequestBody作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并
2023-05-31

SpringBoot项目中使用Swagger2及注解解释的详细教程

Swagger2是一个开源项目,用于为RESTfulWeb服务生成RESTAPI文档,下面这篇文章主要给大家介绍了关于SpringBoot项目中使用Swagger2及注解解释的详细教程,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-05-14

SpringMVC中的参数怎么利用注解获取

SpringMVC中的参数怎么利用注解获取?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SpringMVC可以通过RequestParam注解来映射获得参数,具
2023-05-31

SpringMVC中如何使用消息转换器HttpMessageConverter与@ResponseBody注解

小编给大家分享一下SpringMVC中如何使用消息转换器HttpMessageConverter与@ResponseBody注解,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去
2023-06-02

使用Maven搭建SpringMVC项目的步骤(图文教程)

约定电脑都安装了eclipse,且已配置好Maven以及eclipse插件。  1.Eclipse  2.maven  3.Eclipse 需要安装maven插件。url:maven - http://download.eclipse.or
2023-05-31

Spring中@order注解用法实战教程

@Order注解主要用来控制配置类的加载顺序,数字越小,越先加载,下面这篇文章主要给大家介绍了关于Spring中@order注解用法的相关资料,需要的朋友可以参考下
2022-11-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录