看这个注解的前提最好熟悉一下SpringMVC的model组件,该注解可以有五种使用方式:

①②③为 @ModelAttribute 跟@RequestMapping 分开修饰方法,被@ModelAttribute修饰的方法比 @RequestMapping修饰的方法先一步调用!!

④是 @ModelAttribute 跟 @RequestMapping 同时修饰方法,

⑤ 是@ModelAttribute 修饰方法的参数。

  ①:方法返回值为void,@ModelAttribute注解没有指定任何属性,这样的话需要将Model或者map传入方法中,如下:

    key为user1,value为User对象,可以用 ${requestScope.user1.userName} 取出

  @ModelAttribute
//@ModelAttribute 没有指定值,且被修饰的方法返回值为void,则需要借助map或者model将数据模型放入request域
public void getUser(Map<String, Object> map) {
System.out.println("ModelAttribute1..");
map.put("user1", new User("kelin","123aaa"));
}

    

  ②:方法返回值为普通的pojo,@ModelAttribute注解没有指定任何属性,这样的话,request域中存入的对象名字默认为类型首字母小写,如下:

    key为user(类型首字母小写),value为User对象,可以用 ${requestScope.user.userName} 取出

  @ModelAttribute
//@ModelAttribute 没有指定值,且被修饰方法有pojo类型的返回值,则request域中 key为返回值类型第一个字母小写的字符串,value为返回值
public User getUser() {
System.out.println("ModelAttribute2..");
return new User("kelin","123aaa");
}

    

  ③:方法返回值为普通的pojo,@ModelAttribute注解指定了value属性,这样的话,request域中就放入了一个对象,如下:

    key为user2,value为User对象,可以用 ${requestScope.user2.userName} 取出

  @ModelAttribute("user2")
//@ModelAttribute 的值就是request域中的key,被该注解修饰的方法的返回值为对应的value
public User getUser() {
System.out.println("ModelAttribute3..");
return new User("kelin","123aaa");
}

  ④:两个注解同时修饰方法,看注释解释,有点不一样,返回的东西不是视图,而是request域中的值,返回的视图变成了 @RequestMapping中指定的value

  /*
* @ModelAttribute 和 @RequestMapping 同时修饰一个方法
*
* @ModelAttribute 中value为 request域中的key,被修饰的方法返回值为request域中的value
* @RequestMapping 中value为 返回的视图名,此例中相当于定向到xxx/testModelAttribute4.jsp
*/ @ModelAttribute(value="user")
@RequestMapping(value="/testModelAttribute4..")
public User testModelAttribute() {
return new User("kelin","123aaa");
}

  ⑤:@ModelAttribute 修饰方法参数(最常用),参数直接封装到对象中,比如常用的 pageNo,pageSize...

  /*
* @ModelAttribute用于修饰入参,前台传过来的值自动赋予入参对于的属性
*/
@RequestMapping("/testModelAttribute5")
public String testModelAttribute(@ModelAttribute User user) {
return "modelAttribute";
}

SpringMVC5中,@ModelAttribute注解详解的更多相关文章

  1. @ModelAttribute注解详解

    @ModelAttribute注解详解 1.@ModelAttribute定义: 被该注解定义的方法,会在该方法所在的controller的任何目标方法执行之前执行 2.@ModelAttribute ...

  2. java中的注解详解和自定义注解

    一.java中的注解详解 1.什么是注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: @Override public Str ...

  3. 08_springmvc数据回显和@ModelAttribute注解详解

    一.数据回显 提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面. 二.pojo数据回显方法 1.springmvc默认对pojo数据进行回显. pojo数据传入controller方法后,s ...

  4. Java编程之反射中的注解详解

    "注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...

  5. Sping框架中的注解详解

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...

  6. @RequestBody, @ResponseBody 注解详解(转)

    原文地址: https://www.cnblogs.com/qq78292959/p/3760651.html @RequestBody, @ResponseBody 注解详解(转) 引言: 接上一篇 ...

  7. SpringMVC 常用注解 详解

    SpringMVC 常用注解 详解 SpringMVC 常用注解 1.@RequestMapping                                      路径映射 2.@Requ ...

  8. 【转】@RequestParam @RequestBody @PathVariable 等参数绑定注解详解

    @RequestParam @RequestBody @PathVariable 等参数绑定注解详解 2014-06-02 11:24 23683人阅读 评论(2) 收藏 举报 目录(?)[+] 引言 ...

  9. @PathVariable @RequestParam @RequestBody等参数绑定注解详解

    一.分类 handler method 参数绑定常用的注解,我们根据他们处理的Request的内容不同分为四类: 处理request uri 部分的注解:   @PathVariable;(这里指ur ...

随机推荐

  1. 解决VirtualBox 运行时报内存不能written

    在VirtualBox 虚拟机中安装系统的时候,突然报"0x00000000指令,该内存不能written",只能强制停止,这个问题要怎么解决呢? 解决办法是恢复系统主题3个dll ...

  2. Nginx 添加防爬虫

    include agent_deny.conf; conf下添加 #禁止Scrapy|curl等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClien ...

  3. 公网ip定位原理-心得

    1.前言 正在做一个根据公网ip来定位到大体的位置,一般是精确到城市或地区, 如果想要精确到街道和地图一一对应,那得使用GPS才可以,这里不讨论. 2.科普 公网也就是外网,由运营商的机房服务器自动给 ...

  4. 第10组 Beta冲刺 (4/5)(组长)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客: https://www.cnblogs.com/cpandbb/p/14018650.html ·作业博客:https://edu.cnblogs.c ...

  5. Go语言实战爬虫项目

    Go语言爬虫框架之Colly和Goquery Python爬虫框架比较多有requests.urllib, pyquery,scrapy等,解析库有BeautifulSoup.pyquery.Scra ...

  6. Hive分析统计离线日志信息

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...

  7. kafka时间轮的原理(一)

    概述 早就想写关于kafka时间轮的随笔了,奈何时间不够,技术感觉理解不到位,现在把我之前学习到的进行整理一下,以便于以后并不会忘却.kafka时间轮是一个时间延时调度的工具,学习它可以掌握更加灵活先 ...

  8. 原生twig模板引擎详解(安装使用)

    最近在学习SSTI(服务器模板注入),所以在此总结一下 0x00 Twig的介绍 什么是Twig? Twig是一款灵活.快速.安全的PHP模板引擎. Twig的特点? 快速:Twig将模板编译为纯粹的 ...

  9. 不会一致性hash算法,劝你简历别写搞过负载均衡

    大家好,我是小富~ 个人公众号:程序员内点事,欢迎学习交流 这两天看到技术群里,有小伙伴在讨论一致性hash算法的问题,正愁没啥写的题目就来了,那就简单介绍下它的原理.下边我们以分布式缓存中经典场景举 ...

  10. java下拉框转换公共方法

    1. 下拉框实例类 import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang3.Boolean ...