zoukankan      html  css  js  c++  java
  • @ModelAttribute

      在执行Controller方法前都会新建一个Map对象称为隐含模型,该Map对象是共享的,如果一个方法的入参为Map ModelAndMap ModelMap等类型,那么会把隐含模型当做入参赋给方法。所以这提供了另一种间接给Controller传递参数的方法:在A方法中向隐含模型写入数据,可以在B方法中访问隐含模型间接得到A方法传递的数据。

      比如执行以下方法可以发现打印内容为true。  

        @RequestMapping("c")
        public String c(Map map1,Map map2){
            System.out.println(map1==map2);
            return "success";
        }

      向隐含模型中写入数据的方法是标注@ModelAttribute,该注解可以标注在方法和入参上。

      标注在方法上时,@ModelAttribute方法会提前执行,并且在该方法内所有向map写入的内容都会保存在隐含模型里。当访问b控制器的时候能够获得键user对应想内容。

    @Controller
    public class testYinHan {
    
        @ModelAttribute
        public void a(ModelMap map){
            map.put("user","xu");
            System.out.println(map.get("user"));
    
        }
    
        @RequestMapping("b")
        public String b(ModelMap map){
            System.out.println(map.get("user"));
            return "success";
        }
    }

      标注在某一个方法的入参上,就等于把该方法放入了隐含模型中,省去了put的步骤。

      并且在返回到视图的时候也会把隐含模型的内容暴露给视图。

      

      

      

      

  • 相关阅读:
    07-JSP
    06-ServletContext和ServletConfig
    05-请求转发和重定向Login
    04-session学习
    03-cookie学习
    02-servlet生命周期和doget()_dopost()方法
    01-request和respone学习
    05-jQuery案例
    04-jQuery的事件机制和动画效果
    03-jQuery操作元素
  • 原文地址:https://www.cnblogs.com/AshOfTime/p/10645929.html
Copyright © 2011-2022 走看看