Spring boot @ModelAttribute标注的实现
@ModelAttribute可以注释方法和参数
@ModelAttribute注释方法
@ModelAttribute注释方法该方法会在controller的所有方法之前被执行。通过Model将value设定到相应的key中。
(1)注释返回值为void的方法,通过传入Model添加属性值
@RestController
@RequestMapping("/usrcontroller")
publicclassUserController{
UserServiceus=newUserService();
@ModelAttribute
publicvoidfindUserById(@RequestParamLonguid,Modelmodel){
model.addAttribute("user",us.getUser(uid));
}
@GetMapping(path="/getuser")
@ResponseBody
publicStringgetUser(Modelmodel){
Useru=(User)(model.getAttribute("user"));
System.out.println(u.name);
returnu.name;
}
}
(2)注释返回值为具体类型的。通过添加属性(属性名为返回值的头字母小写,例如返回值为Group,属性为group)将返回值添加
实际结果类似与model.addAttribute("returnvaluename",var);
@RestController
@RequestMapping("/groupcontroller")
publicclassGroupController{
@ModelAttribute
publicGroupgetGroupId(@RequestParamLonggid){
Groupg=newGroup();
g.groupName="group_"+gid;
g.groupId=gid;
returng;
//sameasModel.addAttribute("group",g)
}
@GetMapping(path="/getgroup")
@ResponseBody
publicStringgetGroup(Modelmodel){
Groupg=(Group)model.getAttribute("group");
StringgStr="group(id:"+g.groupId+","+g.groupName+")";
System.out.println(gStr);
returngStr;
}
}
(3)指定属性的名称
//类似于Model.addAttribute("defaultuser",User)
@ModelAttribute("defaultuser")
publicUsercreateDefaultUser(){
returnnewUser("defaultUsr","SH",22,true);
}
@GetMapping(path="/checkdefaultuser")
@ResponseBody
publicStringcheckDefaultUser(@ModelAttribute("defaultuser")UserdfUsr){
StringdfUsrStr="Defaultuser("+dfUsr.name+","+dfUsr.address+","+dfUsr.age+","+dfUsr.isMan+")";
System.out.println(dfUsrStr);
returndfUsrStr;
}
@ModeAttribute注释方法的参数
@ModelAttribute("defaultuser")
publicUsercreateDefaultUser(){
returnnewUser("defaultUsr","SH",22,true);
}
@GetMapping(path="/checkdefaultuser")
@ResponseBody
publicStringcheckDefaultUser(@ModelAttribute("defaultuser")UserdfUsr){
StringdfUsrStr="Defaultuser("+dfUsr.name+","+dfUsr.address+","+dfUsr.age+","+dfUsr.isMan+")";
System.out.println(dfUsrStr);
returndfUsrStr;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。