A.标注在有返回值的方法上
当ModelAttribute设置了value,方法返回的值会以这个value为key,以参数接受到的值作为这个key对应的value,组成k-v键值对,存入到Model中,如下面的方法执行之后,最终相当于 model.addAttribute(“user_name”, name);假如 @ModelAttribute没有自定义value,则相当于
model.addAttribute(“name”, name);
往前台传数据,可以传对象,可以传List,通过el表达式 ${}可以获取到,
类似于request.setAttribute(“sts”,sts)效果一样。
@ModelAttribute(value="user_name")public String before2(@RequestParam(required = false) String name, Model model) {System.out.println("进入了2:" + name);return name;}
B.标注在没有返回值的方法上
需要手动model.add方法
@ModelAttributepublic void before(@RequestParam(required = false) Integer age, Model model){model.addAttribute("age", age);System.out.println("进入了1:" + age);}
C.标注在方法的参数上
会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用
@RequestMapping(value="/mod2")public Resp mod2(@ModelAttribute("user_name") String user_name,@ModelAttribute("name") String name,@ModelAttribute("age") Integer age,Model model){System.out.println("进入mod2");System.out.println("user_name:"+user_name);System.out.println("name:"+name);System.out.println("age:"+age);System.out.println("model:"+model);return Resp.success("1");}
