全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

spring学习教程之@ModelAttribute注解运用详解

本文主要给大家介绍了关于java中@ModelAttribute使用的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍:

一、@ModelAttribute注释方法 

例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。    

(1)@ModelAttribute注释void返回值的方法

@Controller 
public class HelloWorldController { 
  @ModelAttribute 
  public void populateModel(@RequestParam String abc, Model model) { 
   model.addAttribute("attributeName", abc); 
  } 
  @RequestMapping(value = "/helloWorld") 
  public String helloWorld() { 
   return "helloWorld"; 
  } 
} 

这个例子,在获得请求/helloWorld 后,populateModel方法在helloWorld方法之前先被调用,它把请求参数(/helloWorld?abc=text)加入到一个名为attributeName的model属性中,在它执行后helloWorld被调用,返回视图名helloWorld和model已由@ModelAttribute方法生产好了。

这个例子中model属性名称和model属性对象有model.addAttribute()实现,不过前提是要在方法中加入一个Model类型的参数。

当URL或者post中不包含次参数时,会报错,其实不需要这个方法,完全可以把请求的方法写成,这样缺少此参数也不会出错

@RequestMapping(value = "/helloWorld") 
public String helloWorld(String abc) { 
   return "helloWorld"; 
} 

(2)@ModelAttribute注释返回具体类的方法

@ModelAttribute 
public Account addAccount(@RequestParam String number) { 
  return accountManager.findAccount(number); 
} 

 这种情况,model属性的名称没有指定,它由返回类型隐含表示,如这个方法返回Account类型,那么这个model属性的名称是account。

这个例子中model属性名称有返回对象类型隐含表示,model属性对象就是方法的返回值。它无须要特定的参数。

(3)@ModelAttribute(value="")注释返回具体类的方法

@Controller 
public class HelloWorldController { 
  @ModelAttribute("attributeName") 
  public String addAccount(@RequestParam String abc) { 
   return abc; 
  } 
  @RequestMapping(value = "/helloWorld") 
  public String helloWorld() { 
   return "helloWorld"; 
  } 
} 

这个例子中使用@ModelAttribute注释的value属性,来指定model属性的名称。model属性对象就是方法的返回值。它无须要特定的参数。

(4)@ModelAttribute和@RequestMapping同时注释一个方法

@Controller 
public class HelloWorldController { 
  @RequestMapping(value = "/helloWorld.do") 
  @ModelAttribute("attributeName") 
  public String helloWorld() { 
   return "hi"; 
  } 
} 

这时这个方法的返回值并不是表示一个视图名称,而是model属性的值,视图名称由RequestToViewNameTranslator根据请求"/helloWorld.do"转换为逻辑视图helloWorld。

Model属性名称有@ModelAttribute(value=””)指定,相当于在request中封装了key=attributeName,value=hi。

二、@ModelAttribute注释一个方法的参数

(1)从model中获取    

@Controller 
public class HelloWorldController { 
  @ModelAttribute("user") 
  public User addAccount() { 
   return new User("jz","123"); 
  } 
  @RequestMapping(value = "/helloWorld") 
  public String helloWorld(@ModelAttribute("user") User user) { 
   user.setUserName("jizhou"); 
   return "helloWorld"; 
  } 
} 

在这个例子里, @ModelAttribute("user") User user注释方法参数,参数user的值来源于addAccount()方法中的model属性。

此时如果方法体没有标注@SessionAttributes("user") ,那么scope为request,如果标注了,那么scope为session

(2)从Form表单或URL参数中获取(实际上,不做此注释也能拿到user对象) 

@Controller 
public class HelloWorldController { 
  @RequestMapping(value = "/helloWorld") 
  public String helloWorld(@ModelAttribute User user) { 
   return "helloWorld"; 
  } 
} 

注意这时候这个User类一定要有没有参数的构造函数。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# spring  # 注释  # modelattribute注解  # modelattribute的用法  # java中@ModelAttribute注解的作用  # spring mvc中注解@ModelAttribute的妙用分享  # spring mvc中的@ModelAttribute注解示例介绍  # SpringMVC中@ModelAttribute注解的使用教程  # 返回值  # 好了  # 在这个  # 多个  # 在此  # 不需要  # 也能  # 要在  # 给大家  # 这种情况  # 不做  # 相关资料  # 这篇文章  # 报错  # 谢谢大家  # 表单  # 装了  # 转换为  # 中不  # 已由 


相关文章: 网站代码制作软件有哪些,如何生成自己网站的代码?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  C#如何序列化对象为XML XmlSerializer用法  如何基于云服务器快速搭建网站及云盘系统?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  如何通过VPS搭建网站快速盈利?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何在宝塔面板中修改默认建站目录?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何通过网站建站时间优化SEO与用户体验?  建站主机选哪种环境更利于SEO优化?  网站制作价目表怎么做,珍爱网婚介费用多少?  微信推文制作网站有哪些,怎么做微信推文,急?  如何用美橙互联一键搭建多站合一网站?  如何快速搭建高效服务器建站系统?  如何撰写建站申请书?关键要点有哪些?  定制建站策划方案_专业建站与网站建设方案一站式指南  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  音乐网站服务器如何优化API响应速度?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  网站微信制作软件,如何制作微信链接?  制作网站外包平台,自动化接单网站有哪些?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  郑州企业网站制作公司,郑州招聘网站有哪些?  简单实现Android验证码  如何快速建站并高效导出源代码?  大型企业网站制作流程,做网站需要注册公司吗?  在线制作视频网站免费,都有哪些好的动漫网站?  制作公司内部网站有哪些,内网如何建网站?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  无锡营销型网站制作公司,无锡网选车牌流程?  C++中引用和指针有什么区别?(代码说明)  韩国服务器如何优化跨境访问实现高效连接?  网站按钮制作软件,如何实现网页中按钮的自动点击?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  建站之星备案流程有哪些注意事项?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  Python如何创建带属性的XML节点  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  香港服务器WordPress建站指南:SEO优化与高效部署策略  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  制作国外网站的软件,国外有哪些比较优质的网站推荐?  专业公司网站制作公司,用什么语言做企业网站比较好?  建站之星如何快速生成多端适配网站?  ,交易猫的商品怎么发布到网站上去?  网站网页制作专业公司,怎样制作自己的网页? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。