返回顶部
首页 > 资讯 > 精选 >Spring中@ModelAttribute注解如何使用
  • 294
分享到

Spring中@ModelAttribute注解如何使用

2023-06-02 21:06:54 294人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关spring中@ModelAttribute注解如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.@ModelAttribute注释方法   例子(1)

这期内容当中小编将会给大家带来有关spring中@ModelAttribute注解如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1.@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。

2.@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对象)

@ModelAttribute具有如下三个作用:

 ①绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用。

  其实  @ModelAttribute 此处对于供视图页面展示来说与 model.addAttribute("attributeName", abc); 功能类似。

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


此处多了一个注解@ModelAttribute("user"),它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用。我们此时可以在视图页面使用${user.username}来获取绑定的命令对象的属性。 

e("user2") UserModel test3(@ModelAttribute("user2") UserModel user)

  大家可以看到返回值类型是命令对象类型,而且通过 @ModelAttribute("user2") 注解,此时会暴露返回值到模型数据( 名字为user2 ) 中供视图展示使用

   @ModelAttribute  注解的返回值会覆盖 @RequestMapping  注解方法中的 @ModelAttribute  注解的同名命令对象

  ③暴露表单引用对象为模型数据:放在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用对象,如注册时需要选择的所在城市等,而且在执行功能处理方法( @RequestMapping  注解的方法)之前,自动添加到模型对象中,用于视图页面展示时使用;

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

上述就是小编为大家分享的Spring中@ModelAttribute注解如何使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Spring中@ModelAttribute注解如何使用

本文链接: https://lsjlt.com/news/231522.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring中@ModelAttribute注解如何使用
    这期内容当中小编将会给大家带来有关Spring中@ModelAttribute注解如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.@ModelAttribute注释方法   例子(1)...
    99+
    2023-06-02
  • @ModelAttribute注解在spring mvc中的使用方法
    @ModelAttribute注解在spring mvc中的使用方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在spring mvc中非常重要的注解@Mod...
    99+
    2023-05-31
    springmvc @modelattribute
  • spring mvc中注解@ModelAttribute的妙用分享
    前言本文主要给大家介绍了关于spring mvc注解@ModelAttribute妙用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。在Spring mvc中,注解@ModelAttribute是一个非常常用的注...
    99+
    2023-05-31
    springmvc 注解 @modelattribute
  • SpringMVC中@ModelAttribute注解的使用教程
    前言 @ModelAttribute最主要的作用是将数据添加到模型对象中,用于视图页面展示时使用。 @ModelAttribute等价于 model.addAttribute("at...
    99+
    2024-04-02
  • spring学习教程之@ModelAttribute注解运用详解
    本文主要给大家介绍了关于java中@ModelAttribute使用的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍:一、@ModelAttribute注释方法 例子(1),(2),(3)类似,被@ModelAttri...
    99+
    2023-05-31
    spring 注释 @modelattribute
  • spring中如何使用@Service注解
    本篇文章为大家展示了spring中如何使用@Service注解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。@Service注解的使用要说明@Service注解的使用,就得说一下我们经常在sprin...
    99+
    2023-06-20
  • Java中如何使用Spring注解
    Java中如何使用Spring注解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在Spring4之后,要使用注解开发,必须要保证aop的包导入了使用注解需要导入contex...
    99+
    2023-06-20
  • 如何在Spring中使用@Transactional注解
    这期内容当中小编将会给大家带来有关如何在Spring中使用@Transactional注解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。@Transactionalservice A(){try...
    99+
    2023-06-15
  • @profile注解如何在spring中使用
    本篇文章给大家分享的是有关@profile注解如何在spring中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先是新建maven工程mvn archetype:gene...
    99+
    2023-05-30
    spring profile
  • Spring @ComponentScan注解如何使用
    今天小编给大家分享一下Spring @ComponentScan注解如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-07-05
  • Spring @Profile注解如何使用
    这篇文章主要介绍“Spring @Profile注解如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring @Profile注解如何使用”文章能帮助大家解决问题。使用...
    99+
    2023-07-06
  • Spring @InitBinder注解如何使用
    这篇文章主要讲解了“Spring @InitBinder注解如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring @InitBinder注解如何使用”吧!一...
    99+
    2023-07-05
  • 如何使用注解开发spring
    本篇文章为大家展示了如何使用注解开发spring,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在Spring4之后,要使用注解开发,必须要保证aop的包导入了。使用注解需要导入context约束,增...
    99+
    2023-06-15
  • 如何在Spring中使用@Override和@Autowired注解
    如何在Spring中使用@Override和@Autowired注解?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、Override首先,@Override 注解是伪代码...
    99+
    2023-06-15
  • Spring Security中的权限注解如何使用
    今天小编给大家分享一下Spring Security中的权限注解如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-06-30
  • 详解spring如何使用注解开发
    在Spring4之后,要使用注解开发,必须要保证aop的包导入了。 使用注解需要导入context约束,增加注解的支持。 <?xml version="1.0" ...
    99+
    2024-04-02
  • 使用Spring MVC4 如何配置注解
    使用Spring MVC4 如何配置注解?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在传统的Spring项目中,我们要写一堆的XML文件。而这些XML文件格式...
    99+
    2023-05-31
    springmvc 注解配置
  • 在Spring-Boot中如何使用@Value注解注入集合类
    我们在使用spring框架进行开发时,有时候需要在properties文件中配置集合内容并注入到代码中使用。本篇文章的目的就是给出一种可行的方式。 1.注入 通常来说,我们都使用@V...
    99+
    2024-04-02
  • 如何使用注解配置Spring容器
    这篇文章给大家分享的是有关如何使用注解配置Spring容器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:@Configuration标注在类上,相当于将该类作为spring的xml的标签@Configu...
    99+
    2023-05-30
    spring
  • 使用Spring Aop如何配置AspectJ注解
    这篇文章将为大家详细讲解有关使用Spring Aop如何配置AspectJ注解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。采用的jdk代理,接口和实现类代码请参考上篇博文。主要是将Aspe...
    99+
    2023-05-31
    springaop aspectj
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作