@ModelAttribute

  • @ModelAttribute:
    该注解通常在Controller上的某个方法上,此方法会首先被调用,并将方法作为Mode的属性,然后再调用对应的Controller处理方法。

    利用postman做测试,localhost:8988/1633c318f09f4071a1609cb5b1a952c5/get.json

      @Resource
      private UserMapper userMapper;
    
      @ModelAttribute
      public User findByUserId(@PathVariable String id){
    
          return userMapper.selectByPrimaryKey(id);
      }
    
      @GetMapping("/{id}/get.json")
      @ResponseBody
      public Boolean getUser(Model model){
    
        if(model.containsAttribute("user")){
    
            return true;
        }else{
    
            return false;
        }
      }
    

    注:对于HTTP请求,会先调用findByUserId方法获取user,并添加到模型里面使用,使用ModelAttribute可以向一个Controller中需要的公共模型中添加数据。

    如果findByUserId仅添加一个对象到Model中,可以写成如下形式:

    @ModelAttribute
    public User findByUserId(@PathVariable String id){
    
         return userMapper.selectByPrimaryKey(id);
    }
    

    Model和ModelView的区别:
    Model:是每次请求中都存在的默认参数,利用其addAttribute()方法即可将[服务器]的值传递到jsp页面中;
    ModelAndView:包含modelview两部分,使用时需要自己实例化,利用ModelMap用来传值,也可以设置view的名称

    具体可以参考:
    https://blog.csdn.net/opera95/article/details/78498812
    https://blog.csdn.net/lpq374606827/article/details/78764139

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容