发布于 2017-12-20 18:23:31 | 80 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Java函数式编程,程序狗速度看过来!

Java程序设计语言

java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。


本文主要介绍了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时的键要和目标方法入参类型的参数名一致。

最终效果:

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



相关阅读 :
java中@ModelAttribute注解的作用
Java中static关键字的作用和用法详细介绍
java中Class.forName的作用浅谈
深入解析Java中volatile关键字的作用
浅析JAVA中toString方法的作用
Java中volatile关键字的作用与用法详解
全面了解Java中Native关键字的作用
小议Java中@param注解与@see注解的作用
深入解析Java编程中final关键字的作用
Java @Deprecated注解的作用及传递性
详解Java中synchronized关键字的死锁和内存占用问题
举例讲解Java中final关键字的用法
最新网友评论  共有(0)条评论 发布评论 返回顶部
月排行榜

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务