@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的名称

posted @ 2021-07-08 16:24  satire  阅读(119)  评论(0编辑  收藏  举报