请选择 进入手机版 | 继续访问电脑版

@ModelAttribute

[复制链接]
小甜心 发表于 2020-12-31 18:15:13 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
                                                                      可否请你动动手指,留下你的一键三连。  
   
官方文档: https://docs.spring.io/spring-framework/docs/5.0.0.RELEASE/spring-framework-reference/web.html#spring-web
 
  
@ModelAttribute注解的两种使用方式

  •       在方法上使用;
  •       在方法的参数上使用。
   在方法上使用        
  1. @ModelAttributepublic Account addAccount(@RequestParam String number) {     return accountManager.findAccount(number);}/*** 返回值以myAccount为key,Account对象为值存储在模子中*/@ModelAttribute("myAccount")public Account addAccount(@RequestParam String number) {     return accountManager.findAccount(number);}/*** 通过model.addAttribute可以添加更多的模子属性*/@ModelAttributepublic void populateModel(@RequestParam String number, Model model) {    model.addAttribute(accountManager.findAccount(number));    // 添加更多属性 ...}
复制代码
   
         上面的例子中,前两个方法是通过返回值来隐式的往模子中添加属性,最后一个方法没有返回值,通过吸收一个Model对象,并通过重载该对象的addAttribute方法往模子中添加任意数量的属性。         一个控制器(Controller)类中可以存在多个带有@ModelAttribute方法,当在请求控制器中的任何一个接口时,均会先执行带有@ModelAttribute注解的所有方法,当所有@ModelAttribute方法执行完成后再执行接口方法。     指定属性名称      通过@ModelAttribute("modelName")和重载Model.addAttribute(. .)方法来指定属性名称。     如果没有指定属性名称怎么办?      在这种情况下,会根据返回值范例为模子属性分配默认名称。      例:

  •        返回值范例为String,默认名称为:string
  •       返回值范例为List,默认名称为:stringList
  •       返回值范例为Map,默认名称为:map
  •        ......
      在方法的参数上使用                       
  1. @GetMapping(path = "/test2")@ResponseBodypublic String sss(@ModelAttribute("name") String name) {    return name;}
复制代码
     
        从上面的示例代码来看,参数name的值大概从以下几个地方来:   

  •         由于使用了@SessionAttributer,大概该值已经存在于模子中;
  •         @ModelAttribute和接口存在于同一个控制器中,所以也大概已经存在于模子中(拜见上面“在方法上使用”所述);
  •         基于url变量;
  •         使用默认的构造函数来实例化。

来源:https://blog.csdn.net/weixin_42600999/article/details/111958563
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )