java中@ModelAttribute注解的作用

  

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

  

癹ava中@ModelAttribute注解的作用“

  

获取的通过为空

  

癹ava中@ModelAttribute注解的作用“

  

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

  

实现代码如下:

        @ModelAttribute   公共空间getuser (@RequestParam (value=" https://www.yisu.com/zixun/name ",要求=false)字符串名称,Map<字符串,Object>地图){   如果(名字!=null) {   System.out.println(“调用ModelAttribute”);//模拟从数据库中获取的对象。   用户用户=新用户(“cjh”、“123”、“123 @qq.com”,“中国”);   System.out.println(“从数据库中获取一个对象”+用户);   map.put(“用户”,用户);   }   }   @RequestMapping ("/getInfo”)   公共字符串getServletAPI(用户用户){   字符串viewName=澳愫谩?   System.out.println(“修改:“+用户);   返回viewName;   }      

  

<强>以上代码的运行流程为:

  

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

  

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

  

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

  

  

最终效果:

  

癹ava中@ModelAttribute注解的作用“

  

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

java中@ModelAttribute注解的作用