@ModelAttribute

2024-06-22 01:12
文章标签 modelattribute

本文主要是介绍@ModelAttribute,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基础知识

1.@ModelAttribute注解源码,从中可以知道,该注解可以标注在参数上和方法上

 2.应用场景:先大致有个概念,可以用来存储项目根路径

 

3.介绍:@ModelAttribute 是 Spring 框架中的一个注解,用于在 Spring MVC 控制器中预处理模型数据。它可以用在方法和方法参数上,用于不同的用途。

方法级别的 @ModelAttribute

当 @ModelAttribute 注解用在方法上时,这个方法会在每个控制器请求处理方法(即 @RequestMapping 注解的方法)执行之前执行。常见的用法是添加共享模型数据,类似于将数据添加到视图中,使其对所有请求处理方法可用。

在上面的示例中,addAttributes 方法会在每个请求处理方法执行之前执行,并将属性 ctx 添加到模型中,这样在视图中可以访问 ctx。

方法参数级别的 @ModelAttribute

当 @ModelAttribute 注解用在方法参数上时,它表示该参数应该从模型中获取。如果模型中没有该参数,Spring 会自动实例化该参数并将其添加到模型中。

在这个示例中,如果模型中已经有一个 user 属性,它将被绑定到 getUser 方法的参数上。如果模型中没有 user 属性,Spring 会创建一个新的 User 对象,并将其添加到模型中。

结合 @RequestMapping 的 @ModelAttribute

@ModelAttribute 也可以用在有 @RequestMapping 注解的方法上,表示该方法返回的对象应该添加到模型中。该方法不会直接处理请求,而是仅仅用于准备模型数据。

在这个示例中,每次调用 /accounts/edit 时,addAccount 方法都会被调用,并且返回的 Account 对象将被添加到模型中。

总结

  1. 方法级别的 @ModelAttribute:用于在每个请求处理方法执行之前添加共享模型数据。

  2. 方法参数级别的 @ModelAttribute:用于从模型中绑定参数,如果模型中没有该参数,会自动创建一个新的对象并添加到模型中。

  3. 结合 @RequestMapping 的 @ModelAttribute:用于准备模型数据,返回的对象会被添加到模型中,但不会直接处理请求。

@ModelAttribute 是在 Spring MVC 中非常强大和灵活的注解,能够简化模型数据的管理和共享。

这篇关于@ModelAttribute的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082871

相关文章

详细分析Springmvc中的@ModelAttribute基本知识(附Demo)

目录 前言1. 注解用法1.1 方法参数1.2 方法1.3 类 2. 注解场景2.1 表单参数2.2 AJAX请求2.3 文件上传 3. 实战4. 总结 前言 将请求参数绑定到模型对象上,或者在请求处理之前添加模型属性 可以在方法参数、方法或者类上使用 一般适用这几种场景: 表单处理:通过 @ModelAttribute 将表单数据绑定到模型对象上预处理逻辑:在请求处理之前

SpringBoot @ModelAttribute 用法

前言 项目中遇到这么一个使用场景,用户的登录信息给予token保存,在需要有登录信息的地方,每次都要去获取用户Id,但每次在请求方法中去获取用户信息,代码重复,冗余,很low于是想到了用@ModelAttribute 这个属性 使用场景 不用@ModelAttribute 时候在需要用户信息的请求中每次需要单独获取用户信息 String token = request.getAttri

SpringBoot @ModelAttribute注解的深入指南

文章目录 前言一、基本概念二、方法级别的@ModelAttribute1. 用途2. 示例 三、参数级别的@ModelAttribute1. 用途2. 示例 四、处理多个@ModelAttribute1. 示例 五、继承与@ModelAttribute注解的结合使用1. 示例1.1 基类(父类)1.2 子类(具体控制器)<

Spring MVC中@ModelAttribute注解(6)

Spring MVC中@ModelAttribute注解 绑定请求参数到实体对象(表单的命令对象)注解一个非请求处理方法 绑定请求参数到实体对象(表单的命令对象) @RequestMapping("/register")public String register(@ModelAttribute("user") UserForm user) {if ("zhangsan".eq

SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解

从上一篇 SpringMVC源码分析(1) 中我们了解到在DispatcherServlet.doDispatch方法中会通过 mv = ha.handle(processedRequest, response, mappedHandler.getHandler()) 这样的方式来执行request的handler方法。   先来分析一下ha.handle方法的调用过程:HandlerAd

ModelMap、ModelAndView和@Modelattribute的区别

首先介绍ModelMap和ModelAndView的作用  ModelMap  ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:  addAttribute(String key,Obj

spring使用@RequestBody和@ModelAttribute接受实体对象

spring使用@RequestBody和@ModelAttribute接受实体对象 1:@RequestBody 方式 用于接收json串  如ajax请求的data参数    可在直接接收转换到Pojo 直接通过浏览器输入url时,@RequestBody获取不到json对象,需要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json

Cris 学 SpringMVC (4): @ModelAttribute 注解

在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了 @ModelAttribute 的方法示例代码 /** 有 @ModelAttributes 标记的方法,会在每个目标方法执行之前被springMVC 调用*/@ModelAttributepublic void getUser(@RequestParam

Springboot中@RequestParam、@RequestBody和@ModelAttribute注解区别

修饰入参时的详细区别: @RequestParam:只支持基本数据类型,用于接收form表单参数或url参数@ModelAttribute:支持基本数据类型和对象类型,用于接收form表单参数或url参数并绑定到model中@RequestBody:支持基本数据类型和对象类型,用于接收json格式数据

22 spring mvc---表单标签库| @ModelAttribute | 实现表单内容提交错误后返回表单时原先内容还在

Spring MVC 表单标签库 声明表单标签库 在使用 SpringMVC 的时候我们可以使用 Spring 封装的一系列表单标签,这些标签都可以访问到 ModelMap 中的内容。我们需要先在 JSP 中声明使用的标签,具体做法是在 JSP 文件的顶部加入以下指令: <%@ taglib prefix="form" uri="http://www.springframework.org/