作用:
该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。
出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可以修饰有具体返回值的方法

出现在参数上,获取指定的数据给参数赋值
属性: value:用于获取数据的 keykey 可以是 POJO 的属性名称,也可以是 map 结构的 key
应用场景: 当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据
(比如user类中有三个属性,而我们表单只提交了两个属性,另外一个属性没有提交值,默认为空,但是我们想用原来数据库的值,现在我们就可以选择modelattribute这个注解)
例如: 我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数 据是肯定没有此字段的内容,一旦更新会把该字段内容置为 null,此时就可以使用此注解解决问题。
index.jsp

<br/>
<form action="anno/testModelAttribute" method="post">用户姓名:<input type="text" name="username"/><br/>用户年龄:<input type="text" name="age"/><br/><input type="submit" value="提交"/>
</form>

controller类

/*ModelAttribute注解*/
@RequestMapping("/testModelAttribute")
public String testModelAttribute(User user){System.out.println("testModelAttribute执行了...");System.out.println(user);return "success";
}
@ModelAttribute
public void showUser(){System.out.println("showUser执行了");
}


即提交表单信息不完整。那我们想用数据库(模拟)中原来的数据。

<br/>
<form action="anno/testModelAttribute" method="post">用户姓名:<input type="text" name="uname"/><br/>用户年龄:<input type="text" name="age"/><br/><input type="submit" value="提交"/>
</form>

我们事先建立了一个javabean的User类,

public class User implements Serializable {private String uname;private Integer age;private Date date;public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}@Overridepublic String toString() {return "User{" +"uname='" + uname + '\'' +", age=" + age +", date=" + date +'}';}
}
/*ModelAttribute注解*/
@RequestMapping("/testModelAttribute")
//注意,这里面的参数会拿到showUser方法中的user对象里面的未被赋值的date
public String testModelAttribute(User user){System.out.println("testModelAttribute执行了...");System.out.println(user);return "success";
}
/*
* 该方法会先执行
*
* */
@ModelAttribute
public User showUser(String uname){System.out.println("showUser执行了");//通过用户查询数据库(模拟)User user =new User();user.setUname(uname);user.setAge(20);user.setDate(new Date());return user;
}


如果没有返回值呢,我们需要使用map集合,把user对象存入到map集合中,然后用modelattribute修饰这个参数,从集合中取出这个user对象。

*ModelAttribute注解*/
@RequestMapping("/testModelAttribute")
//注意,这里面的参数会拿到showUser方法中的user对象里面的未被赋值的date
public String testModelAttribute(@ModelAttribute("abc") User user){System.out.println("testModelAttribute执行了...");System.out.println(user);return "success";
}@ModelAttribute
public void showUser(String uname, Map<String,User> map){System.out.println("showUser执行了");//通过用户查询数据库(模拟)User user =new User();user.setUname(uname);user.setAge(20);user.setDate(new Date());map.put("abc",user);
}

SpringMVC框架----ModelAttribute注解相关推荐

  1. SpringMVC框架使用注解执行定时任务

    2019独角兽企业重金招聘Python工程师标准>>> 在项目开发过程中,免不了会有一些定时任务.今天就给大家一个SpringMVC框架中利用注解的方式执行定时任务的示例代码 使用到 ...

  2. SpringMVC框架中注解的详细介绍

    目录 前言 1. @Controller注解(用在类上面) 2. @RequestMapping(用在类上面) 3. @RequestMapping(用在方法上面) 4.  @ResponseBody ...

  3. springmvc的ModelAttribute注解

    先看一个没有使用@ModelAttribute的Controller方法. [java] view plaincopy @RequestMapping("/save") publi ...

  4. 【SpringMVC框架】注解的处理器映射器和适配器配置

    下面我们来探讨注解的处理器映射器和适配器 1.注解的处理器映射器和适配器 在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.De ...

  5. SpringMVC框架使用注解执行定时任务(转)

    首先要配置我们的SpringMVC文件 xmlns 加下面的内容: xmlns:task="http://www.springframework.org/schema/task" ...

  6. SpringMVC框架----SessionAttribute注解

    作用: 用于多次执行控制器方法间的参数共享. 属性: value:用于指定存入的属性名称 type:用于指定存入的数据类型 如果是把一个数据存到session这个域对象中,session域称为会话域. ...

  7. SpringMVC框架----RequestParam注解和RequestBody注解

    1.RequestParam注解 作用:把请求中指定名称的参数给控制器中的形参赋值. 如果表单提交一个属性username,后台想接收到这个数据,必须在方法中加一个参数叫username,如果名字写的 ...

  8. SpringMVC框架----RequestMapping注解

    作用:用于建立请求 URL 和处理请求方法之间的对应关系 客户端会发一个请求过来,后台会有一个方法去执行它,现在我们需要把请求地址路径和我们的方法建立一个映射关联,发了请求,我们的方法就执行. Req ...

  9. SpringMVC框架 学习DAY_03:@RequestMapping注解/拦截器与过滤器

    1. 关于@RequestMapping注解 在控制器中,在处理请求的方法之前添加@RequestMapping注解,可以配置请求路径与处理请求的方法的映射关系! 在@RequestMapping注解 ...

最新文章

  1. 通过分离dataSource 让我们的code具有更高的复用性.
  2. 腾讯医疗AI实验室:基于深度学习的放疗靶区自动勾画
  3. (转)浅析CSS——元素重叠及position定位的z-index顺序
  4. 教育部成立校外教育培训监管司 K12迎最强监管 教育中概股再跳水
  5. iOS开发-View中frame和bounds区别
  6. web项目在iis配置好后不能正确访问问题集锦,以及IIS常规设置
  7. Entity Framework 4.1 - Code First 指定外键名称
  8. 优秀网站源码、编程源码大全
  9. DW——验证注册页面 设计JavaScript
  10. 阿里云迁移工具推荐最佳实践:物理服务器迁移到阿里云
  11. U盘装机大师安装GHOST WIN10系统
  12. 儿童摄影html代码源,HTML5织梦dede儿童摄影/影楼/写真/摄影工作室网站模板
  13. 在工作中历练思考力,行动力,表达力
  14. 前端切图仔,常用的21个字符串方法
  15. 软文营销保持好奇心才能吸引读者采取行动
  16. vim:修改vim录制的宏
  17. css样式写一个公告通知
  18. 近视也可以用计算机来算,近视眼度数怎么算的 5个方法教你掌握
  19. 国科大学习资料--模式识别--模式识别重点
  20. Spark ALS recommendForAll源码解析实战之Spark1.x vs Spark2.x

热门文章

  1. 看完《复联4》想剧透怎么办?网店开始卖《复联4》讨论群了...
  2. JavaScript基础(五分钟让你了解js全貌)
  3. matlab编程设计fir滤波器,用MATLAB设计FIR滤波器
  4. java记录类加载的个数_java类加载过程 - audience_1的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. 计算机三级数据库er图试题里,2019年3月计算机三级数据库考试基础试题及答案006...
  6. std c++ 获取运行时间封装
  7. linux 和 windows usb插拔侦测
  8. html svg画图
  9. 遇到一个Linux系统时间突变问题
  10. centos6.5卸载java,CentOS 5.2卸载自带Java1.4.2 安装JDK6