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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。