@ModelAttribute三个常见作用:

  1. 被标注了@ModelAttribute的方法都会在Controller的目标方法之前执行。
  2. 目标方法的参数(JavaBean对象)会先从隐含模型中获取值传入(如果客户端有传就会覆盖)。
    text
    1 2 3
     /* 默认情况下SpringMVC会先从隐含模型中,以参数的类名,转成首字母小写
      * Book  ===>>>>  book ,去从隐含模型中取值,并传入参数中
      
  3. 被标注在参数上,参数值会按照指定的key从隐含模型中获取值。
    public String test2( @ModelAttribute("bookAbc") Book book) {
    会从隐含模型中以bookAbc做为key去取值并注入到方法的参数中
text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
    @ModelAttribute
    public void modelAttributeFun( Map<String, Object> map ) {
        System.out.println("modelAttributeFun 方法");
        // 往隐含模型中保存数据
        map.put("bookAbc", new Book(99, "隐含模型中的数据"));
        
    }

    @RequestMapping("/test2")
    public String test2( @ModelAttribute("bookAbc") Book book) {
        /* 默认情况下SpringMVC会先从隐含模型中,以参数的类型,转成首字母小写
         * Book  ===>>>>  book ,去从隐含模型中取值,并传入参数中
         *  */
        System.out.println("test2 方法调用了!!!!");

        System.out.println("参数book的值是:" + book);

        return "showData";
    }