@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:
包含model
和view
两部分,使用时需要自己实例化,利用ModelMap
用来传值,也可以设置view
的名称