java中@ModelAttribute注解的作用

 更新时间:2017年02月19日 10:11:50   作者:小Cai先森  
本文主要介绍了java中@ModelAttribute注解的作用。具有很好的参考价值,下面跟着小编一起来看下吧

问题描述:当我们使用表单传值得时候,如果定义了,name,address,age。等属性,那么通过表单传过去的值就只有这3个属性,但是我们需要的name,pass,address,age等四个属性。那么在提交表单并赋值的时候就会出现,未得到的值为null的情况。如下图:

获取的pass为null

那么我们需要用@ModelAttribute注解来解决他:

实现代码如下:

 @ModelAttribute
 public void getUsers(@RequestParam(value="name",required=false) String name,Map<String, Object> map){
  if(name!=null){
   System.out.println("调用ModelAttribute");
   //模拟从数据库中获取的对象。
   User users = new User("cjh","123","123@qq.com","China");
   System.out.println("从数据库中获取一个对象"+users);
   map.put("user",users);
  }
 }
 @RequestMapping("/getInfo")
 public String getServletAPI(User user){
  String viewName = "hello";
  System.out.println("修改:"+user);
  return viewName;
 }

@ModelAttribute注解的方法,在这个控制器中不管其他任何一个方法被调用,都会执行。

以上代码的运行流程为:

1.首先执行@ModelAttribute注解修饰的方法,从数据库中查找出对应要修改的对象,把值放在map键值对中,key应该和处理请求的方法传入的参数名一样,如:此处定义的传入参数名为user,那么map.put(“user”,值(从数据库中查询的对象))。这个Map需要定义在方法入参的地方(代码如上)。

2.Spring MVC会从Map中找出user对象,并把表单请求参数赋值给该user对象,只有表单定义了的属性才会被替换,没定义的为null,不改变。所以要求@ModelAttribute修饰的方法中定义的key的名称要和控制器方法(@RequestMapping()修饰的方法)中入参的名称要一致。否则没效果。

3.Spring MVC 把上述对象传入目标方法的参数。

注意:在@ModelAttribute 修饰的方法中,放入到map时的键要和目标方法入参类型的参数名一致。

最终效果:

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • Eclipse中创建Web项目最新方法(2023年)

    Eclipse中创建Web项目最新方法(2023年)

    在Java开发人员中,最常用的开发工具应该就是Eclipse,下面这篇文章主要给大家介绍了关于Eclipse中创建Web项目2023年最新的方法,需要的朋友可以参考下
    2023-09-09
  • springboot多文件上传实现使用postman测试多文件上传接口

    springboot多文件上传实现使用postman测试多文件上传接口

    这篇文章主要介绍了springboot多文件上传实现使用postman测试多文件上传接口,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java 学习笔记(入门篇)_java程序helloWorld

    java 学习笔记(入门篇)_java程序helloWorld

    安装配置完Java的jdk,下面就开始写第一个java程序--hello World.用来在控制台输出“Hello World”,接下来详细介绍,感兴趣的朋友可以参考下
    2013-01-01
  • 在IntelliJ IDEA中创建和运行java/scala/spark程序的方法

    在IntelliJ IDEA中创建和运行java/scala/spark程序的方法

    这篇文章主要介绍了在IntelliJ IDEA中创建和运行java/scala/spark程序的教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • SpringMVC路径匹配中使用通配符问题

    SpringMVC路径匹配中使用通配符问题

    这篇文章主要介绍了SpringMVC路径匹配中使用通配符问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • feign调用中文参数被encode编译的问题

    feign调用中文参数被encode编译的问题

    这篇文章主要介绍了feign调用中文参数被encode编译的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 深入理解Java设计模式之迭代器模式

    深入理解Java设计模式之迭代器模式

    这篇文章主要介绍了JAVA设计模式之迭代器模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解
    2021-11-11
  • SpringBoot使用JUL实现日志记录功能

    SpringBoot使用JUL实现日志记录功能

    在SpringBoot中,我们可以使用多种日志框架进行日志记录,其中,JUL(Java Util Logging)是Java平台自带的日志框架,它提供了简单的 API 和配置,可以轻松地进行日志记录,本文将介绍如何在 SpringBoot中使用JUL进行日志记录,并提供示例代码
    2023-06-06
  • Java中MapStruct映射处理器报错的问题解决

    Java中MapStruct映射处理器报错的问题解决

    MapStruct是一个强大的Java映射框架,它能够在编译时生成映射代码,,本文主要介绍了Java中MapStruct映射处理器报错的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Java使用I/O流读取文件内容的方法详解

    Java使用I/O流读取文件内容的方法详解

    这篇文章主要介绍了Java使用I/O流读取文件内容的方法,结合实例形式详细分析了java使用I/O流读取文件常见操作技巧,需要的朋友可以参考下
    2019-11-11

最新评论