全网整合营销服务商

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

免费咨询热线: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注解的使用教程  # 返回值  # 好了  # 在这个  # 多个  # 在此  # 不需要  # 也能  # 要在  # 给大家  # 这种情况  # 不做  # 相关资料  # 这篇文章  # 报错  # 谢谢大家  # 表单  # 装了  # 转换为  # 中不  # 已由 


相关文章: 网站代码制作软件有哪些,如何生成自己网站的代码?  建站VPS配置与SEO优化指南:关键词排名提升策略  北京网站制作网页,网站升级改版需要多久?  c# await 一个已经完成的Task会发生什么  Android滚轮选择时间控件使用详解  东莞专业制作网站的公司,东莞大学生网的网址是什么?  nginx修改上传文件大小限制的方法  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何用免费手机建站系统零基础打造专业网站?  如何用IIS7快速搭建并优化网站站点?  官网网站制作腾讯审核要多久,联想路由器newifi官网  网站制作大概多少钱一个,做一个平台网站大概多少钱?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  Swift开发中switch语句值绑定模式  再谈Python中的字符串与字符编码(推荐)  如何用美橙互联一键搭建多站合一网站?  建站之星代理商如何保障技术支持与售后服务?  教程网站设计制作软件,怎么创建自己的一个网站?  5种Android数据存储方式汇总  如何快速搭建高效服务器建站系统?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  设计网站制作公司有哪些,制作网页教程?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  存储型VPS适合搭建中小型网站吗?  盐城做公司网站,江苏电子版退休证办理流程?  如何快速生成凡客建站的专业级图册?  网站制作软件有哪些,制图软件有哪些?  建站之星官网登录失败?如何快速解决?  如何在阿里云虚拟主机上快速搭建个人网站?  制作门户网站的参考文献在哪,小说网站怎么建立?  建站之星如何助力网站排名飙升?揭秘高效技巧  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何通过可视化优化提升建站效果?  如何在Windows虚拟主机上快速搭建网站?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  如何在宝塔面板创建新站点?  h5在线制作网站电脑版下载,h5网页制作软件?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  如何通过VPS建站实现广告与增值服务盈利?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  网站制作新手教程,新手建设一个网站需要注意些什么?  公司网站设计制作厂家,怎么创建自己的一个网站?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  如何在腾讯云免费申请建站?  企业微网站怎么做,公司网站和公众号有什么区别?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  如何获取开源自助建站系统免费下载链接? 

您的项目需求

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