SpringMVC框架----ModelAttribute注解
作用:
该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。
出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可以修饰有具体返回值的方法。
出现在参数上,获取指定的数据给参数赋值。
属性: value:用于获取数据的 key。key 可以是 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注解相关推荐
- SpringMVC框架使用注解执行定时任务
2019独角兽企业重金招聘Python工程师标准>>> 在项目开发过程中,免不了会有一些定时任务.今天就给大家一个SpringMVC框架中利用注解的方式执行定时任务的示例代码 使用到 ...
- SpringMVC框架中注解的详细介绍
目录 前言 1. @Controller注解(用在类上面) 2. @RequestMapping(用在类上面) 3. @RequestMapping(用在方法上面) 4. @ResponseBody ...
- springmvc的ModelAttribute注解
先看一个没有使用@ModelAttribute的Controller方法. [java] view plaincopy @RequestMapping("/save") publi ...
- 【SpringMVC框架】注解的处理器映射器和适配器配置
下面我们来探讨注解的处理器映射器和适配器 1.注解的处理器映射器和适配器 在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.De ...
- SpringMVC框架使用注解执行定时任务(转)
首先要配置我们的SpringMVC文件 xmlns 加下面的内容: xmlns:task="http://www.springframework.org/schema/task" ...
- SpringMVC框架----SessionAttribute注解
作用: 用于多次执行控制器方法间的参数共享. 属性: value:用于指定存入的属性名称 type:用于指定存入的数据类型 如果是把一个数据存到session这个域对象中,session域称为会话域. ...
- SpringMVC框架----RequestParam注解和RequestBody注解
1.RequestParam注解 作用:把请求中指定名称的参数给控制器中的形参赋值. 如果表单提交一个属性username,后台想接收到这个数据,必须在方法中加一个参数叫username,如果名字写的 ...
- SpringMVC框架----RequestMapping注解
作用:用于建立请求 URL 和处理请求方法之间的对应关系 客户端会发一个请求过来,后台会有一个方法去执行它,现在我们需要把请求地址路径和我们的方法建立一个映射关联,发了请求,我们的方法就执行. Req ...
- SpringMVC框架 学习DAY_03:@RequestMapping注解/拦截器与过滤器
1. 关于@RequestMapping注解 在控制器中,在处理请求的方法之前添加@RequestMapping注解,可以配置请求路径与处理请求的方法的映射关系! 在@RequestMapping注解 ...
最新文章
- 通过分离dataSource 让我们的code具有更高的复用性.
- 腾讯医疗AI实验室:基于深度学习的放疗靶区自动勾画
- (转)浅析CSS——元素重叠及position定位的z-index顺序
- 教育部成立校外教育培训监管司 K12迎最强监管 教育中概股再跳水
- iOS开发-View中frame和bounds区别
- web项目在iis配置好后不能正确访问问题集锦,以及IIS常规设置
- Entity Framework 4.1 - Code First 指定外键名称
- 优秀网站源码、编程源码大全
- DW——验证注册页面 设计JavaScript
- 阿里云迁移工具推荐最佳实践:物理服务器迁移到阿里云
- U盘装机大师安装GHOST WIN10系统
- 儿童摄影html代码源,HTML5织梦dede儿童摄影/影楼/写真/摄影工作室网站模板
- 在工作中历练思考力,行动力,表达力
- 前端切图仔,常用的21个字符串方法
- 软文营销保持好奇心才能吸引读者采取行动
- vim:修改vim录制的宏
- css样式写一个公告通知
- 近视也可以用计算机来算,近视眼度数怎么算的 5个方法教你掌握
- 国科大学习资料--模式识别--模式识别重点
- Spark ALS recommendForAll源码解析实战之Spark1.x vs Spark2.x
热门文章
- 看完《复联4》想剧透怎么办?网店开始卖《复联4》讨论群了...
- JavaScript基础(五分钟让你了解js全貌)
- matlab编程设计fir滤波器,用MATLAB设计FIR滤波器
- java记录类加载的个数_java类加载过程 - audience_1的个人空间 - OSCHINA - 中文开源技术交流社区...
- 计算机三级数据库er图试题里,2019年3月计算机三级数据库考试基础试题及答案006...
- std c++ 获取运行时间封装
- linux 和 windows usb插拔侦测
- html svg画图
- 遇到一个Linux系统时间突变问题
- centos6.5卸载java,CentOS 5.2卸载自带Java1.4.2 安装JDK6