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)效果一样。

    1. @ModelAttribute(value="user_name")
    2. public String before2(@RequestParam(required = false) String name, Model model) {
    3. System.out.println("进入了2:" + name);
    4. return name;
    5. }

    B.标注在没有返回值的方法上
    需要手动model.add方法

    1. @ModelAttribute
    2. public void before(@RequestParam(required = false) Integer age, Model model){
    3. model.addAttribute("age", age);
    4. System.out.println("进入了1:" + age);
    5. }

    C.标注在方法的参数上
    会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用

    1. @RequestMapping(value="/mod2")
    2. public Resp mod2(@ModelAttribute("user_name") String user_name,
    3. @ModelAttribute("name") String name,
    4. @ModelAttribute("age") Integer age,Model model){
    5. System.out.println("进入mod2");
    6. System.out.println("user_name:"+user_name);
    7. System.out.println("name:"+name);
    8. System.out.println("age:"+age);
    9. System.out.println("model:"+model);
    10. return Resp.success("1");
    11. }