@ModelAttribute注解详解

1.@ModelAttribute定义:

被该注解定义的方法,会在该方法所在的controller的任何目标方法执行之前执行

2.@ModelAttribute使用:

1)应用场景:

当我们需要修改一个user的信息时,我们希望只修改部分属性值,其他属性值保留。

这个时候我们就需要用@ModelAttribute定义一个方法,这个方法在目标方法执行之前执行。

先到数据库查询到需要修改的user,转到目标方法,将表单的数据赋值到这个user中,最后将user作为目标方法的入参传给目标方法处理。

由于我们先从数据库中查询到了user,并将表单中的数据(这些数据只是user实体中的部分属性)赋值给该user,这样我们就达到了我们的需求。

即:当我们需要修改一个user的信息时,我们希望只修改部分属性值,其他属性值保留。

2)代码:

    @ModelAttribute
public void getUser(@RequestParam(value="id", required=false) Integer id, Map<String, Object> map){
if(id!=null){
User user = new User(); //模拟从数据库中取出user
map.put("user", user);
}
}

注意:

1.@RequestParam注释中一定要添加required=false,为什么?我们想一想,被@RequestParam修饰的方法会在所有(有关的、无关的)目标方法执行之前执行,

  如果某个方法的请求没有请求参数id,那么将会抛出异常

2.将查询到的user保存到map中

    @RequestMapping(value="/userOption", method=RequestMethod.PUT)
public String modifyUser(User user){
System.out.println(user);
return "success";
}

注意:

1.在@ModelAttribute方法结束,目标方法开始之前,springmvc为我们做了一件事:从map中取出user,将表单数据赋值给user,将user传给目标方法的入参

2.这时,目标方法的入参user就是我们修改过后的user(包括修改过的数据和没被修改的数据),之后我们就可以将use保存到数据库了

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

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

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

  2. SpringMVC5中,@ModelAttribute注解详解

    看这个注解的前提最好熟悉一下SpringMVC的model组件,该注解可以有五种使用方式: ①②③为 @ModelAttribute 跟@RequestMapping 分开修饰方法,被@ModelAt ...

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

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

  4. SpringMVC 常用注解 详解

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

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

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

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

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

  7. @ModelAttribute运用详解

      @ModelAttribute使用详解 1.@ModelAttribute注释方法     例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个 ...

  8. (转)spring学习之@ModelAttribute运用详解

    @ModelAttribute使用详解 1 @ModelAttribute注释方法 例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被 ...

  9. [转载]springmvc学习之@ModelAttribute运用详解

    spring学习之@ModelAttribute运用详解 链接

随机推荐

  1. MariaDB 使用正则匹配查询(7)

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...

  2. Jmeter 结构、原理介绍

    Jmeter结构.原理介绍 一.Jmeter 简介 1.是基于java语言的开源的应用软件. 2.可以进行接口测试.性能测试.接口及性能的自动化测试. 二.Jmeter体系结构 元件:可以理解为每一个 ...

  3. 杀掉所有 skynet 进程

    ps aux | grep skynet | awk '/config/{print $2}' | xargs kill

  4. python -m SimpleHTTPServer 8080

    启动一个简单的 web 服务器 python -m SimpleHTTPServer 8080

  5. storm安装以及简单操作

    storm的安装比较简单,下面以storm的单节点为例说明storm的安装步骤. 1.storm的下载 进入storm的官方网站http://storm.apache.org/,点击download按 ...

  6. 搭建json-server本地接口

    这里我们来搭建一下json-server的本地接口,来让我们的网页能够对里面的数据进行增删改查 第一步,安装json-server的全局:Linux和windows在终端或者git中里面输入以下指令, ...

  7. Linux - APT包管理

    dpkg与apt dpkg用来安装本地deb格式软件包,但不会解决软件包的依赖关系. APT(Advanced Packaging Tool)是从更新源获取并安装软件包,而且会解决依赖关系, 但不会安 ...

  8. WebRTC开发基础(WebRTC入门系列1:getUserMedia)

    什么是WebRTC WebRTC由IETF(Internet Engineering Task Force——互联网工程任务组)和W3C(World Wide Web Consortium——万维网联 ...

  9. Java读取文件加锁代码Demo(利用Java的NIO)

    本博文部分转载于:http://blog.csdn.net/wangbaochu/article/details/48546717 Java 提供了文件锁FileLock类,利用这个类可以控制不同程序 ...

  10. Java 多线程学习笔记:生产者消费者问题

    前言:最近在学习Java多线程,看到ImportNew网上有网友翻译的一篇文章<阻塞队列实现生产者消费者模式>.在文中,使用的是Java的concurrent包中的阻塞队列来实现.在看完后 ...