@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

你可能感兴趣的:(@ModelAttribute)