SpringMVC 确定目标方法 POJO 类型入参的过程

Solidworks二次开发(C# .NET API):从零构建装配体与虚拟零件 本文详细介绍了使用C#进行Solidworks二次开发,从零构建装配体与虚拟零件的完整流程。通过.NET API实现设计自动化,涵盖环境搭建、核心对象模型、虚拟零件创建与外部化保存等关键技术,帮助工程师将重复性建模工作程序化,大幅提升设计效率与标准化水平。 阅读详情
  • SpringMVC 确定目标方法 POJO 类型入参的过程
      1. 确定一个 key:
    • 1). 若目标方法的 POJO 类型的参数木有使用 @ModelAttribute 作为修饰, 则 key 为 POJO 类名第一个字母的小写
    • 2). 若使用了 @ModelAttribute 来修饰, 则 key 为 @ModelAttribute 注解的 value 属性值.
      1. 在 implicitModel 中查找 key 对应的对象, 若存在, 则作为入参传入
    • 1). 若在 @ModelAttribute 标记的方法中在 Map 中保存过, 且 key 和 1 确定的 key 一致, 则会获取到.
      1. 若 implicitModel 中不存在 key 对应的对象, 则检查当前的 Handler 是否使用 @SessionAttributes 注解修饰,
    • 若使用了该注解, 且 @SessionAttributes 注解的 value 属性值中包含了 key, 则会从 HttpSession 中来获取 key 所
    • 对应的 value 值, 若存在则直接传入到目标方法的入参中. 若不存在则将抛出异常.
      1. 若 Handler 没有标识 @SessionAttributes 注解或 @SessionAttributes 注解的 value 值中不包含 key, 则
    • 会通过反射来创建 POJO 类型的参数, 传入为目标方法的参数
      1. SpringMVC 会把 key 和 POJO 类型的对象保存到 implicitModel 中, 进而会保存到 request 中.

      • 源代码分析的流程
      1. 调用 @ModelAttribute 注解修饰的方法. 实际上把 @ModelAttribute 方法中 Map 中的数据放在了 implicitModel 中.
      1. 解析请求处理器的目标参数, 实际上该目标参数来自于 WebDataBinder 对象的 target 属性
    • 1). 创建 WebDataBinder 对象:
    • ①. 确定 objectName 属性: 若传入的 attrName 属性值为 “”, 则 objectName 为类名第一个字母小写.
    • *注意: attrName. 若目标方法的 POJO 属性使用了 @ModelAttribute 来修饰, 则 attrName 值即为 @ModelAttribute
    • 的 value 属性值

      • ②. 确定 target 属性:
    • > 在 implicitModel 中查找 attrName 对应的属性值. 若存在, ok
    • > *若不存在: 则验证当前 Handler 是否使用了 @SessionAttributes 进行修饰, 若使用了, 则尝试从 Session 中
    • 获取 attrName 所对应的属性值. 若 session 中没有对应的属性值, 则抛出了异常.
    • > 若 Handler 没有使用 @SessionAttributes 进行修饰, 或 @SessionAttributes 中没有使用 value 值指定的 key
    • 和 attrName 相匹配, 则通过反射创建了 POJO 对象

      • 2). SpringMVC 把表单的请求参数赋给了 WebDataBinder 的 target 对应的属性.
    • 3). *SpringMVC 会把 WebDataBinder 的 attrName 和 target 给到 implicitModel.
    • 近而传到 request 域对象中.
    • 4). 把 WebDataBinder 的 target 作为参数传递给目标方法的入参.
      */
/*
     *由@ModelAttribute 标记的方法,会在每个目标方法执行前被Spring MVC调用!
     *@ModelAttribute 注解也可以来修饰目标方法POJO类型的入参,其value属性值有如下的作用:
     *1).SpringMVC 会使用value属性值在implicitModel 中查找对应的对象,若存在则会直接传入到目标方法的入参中。
     *2).SpringMVC 会以 value 为key ,POJO 类型的对象为value,存入到request中。
     */
    @ModelAttribute
    public void getUser(@RequestParam(value="id",required = false)Integer id,Map<String, Object> map){
        System.out.println("@modelAttribute执行");
        if(id != null){
            User user =  new User(1, "tom", "123456", "lizhen@edu.cn", 12);
            System.out.println("模拟从数据库中获取对象"+user);
            map.put("abc", user);
        }
    }

@RequestMapping("/testModelAttribute")
    public String testModelAttribute(/*@ModelAttribute("abc")*/User userl){
        System.out.println("修改:"+userl);
        return SUCCESS;
    }
这里写代码片
NVIDIA Isaac Sim 联合 VS Code 开发调试环境配置 在 Visual Studio Code (VS Code) 中打开 Isaac Sim 软件包主文件夹,即可打开该工作区。注意建议在学习教程和示例时使用 Visual Studio Code。另请参见有关 VS Code 工作区的详细信息,请参阅 Visual Studio Code (VS Code) 文档。 阅读详情

相关推荐

c语言【分糖果】2023蓝桥杯4124(枚举,递归,dfs)

但是这是不符合我们糖果刚好分完的条件的,我们应该往回退到上一层,也就是孩子6这层,然后j+1=3,孩子7分到3个第二种糖果,这也不符合我们糖果刚好分完的条件,然后就会再次回退到孩子6这里,然后j+1=4,让我们的孩子7获得5块第二种糖果,然后还是不符合糖果刚分完的条件,于是再一次退回到孩子6这里,然后就会有外循环i+1=1,j=1,孩子7分到1块第一种糖果1块第二块糖果......然后就是这样的不停地回溯,试探,直到把整棵树遍历一遍,并且记录所有的满足条件的组合。先放一下我的代码,我的代码超时啦救命!

weixin_74331419的博客 732

springmvc参数绑定(二)

1      包装类型pojo参数绑定 采用类似struts中对象.属性的方式命名,需要将pojo对象作为一个包装对象的属性,action中以该包装对象作为形参。 1.1  需求          商品查询controller方法中实现商品查询条件传入。 1.2  实现方法 第一种方法:在形参中添加HttpServletRequest request参数,通过request接收查询条件参

哎幽的成长 1016

从零搭建ROS机械臂仿真环境:Ubuntu 20.04+Noetic下配置睿尔曼RM65的完整流程

本文详细介绍了在Ubuntu 20.04系统中,基于ROS Noetic搭建睿尔曼RM65机械臂的完整仿真环境。从环境准备、工作空间创建到MoveIt!配置与Gazebo仿真环境集成,提供了完整的流程和优化建议,帮助开发者高效实现机械臂仿真与调试。

v6b7n8m9q0的博客 934

SpringMvc

SDA

所得皆惊喜 745

CANopen PDO 配置實戰:3步完成0x1800-0x1A00物件字典映射與事件觸發

本文详细解析CANopen PDO配置实战,通过3个关键步骤完成0x1800-0x1A00对象字典映射与事件触发设置。重点介绍COB-ID位域解析、映射参数配置及事件触发优化,帮助工程师实现工业自动化设备间毫秒级实时数据交换,提升系统通信效率。

weixin_33709609的博客 381

Marin说PCB之LPDDR5的布线注意事项--01

以上就是本期所有内容了,有些是通用的LPDDR5的设计准则,有的是针对单板的设计规则,严格意义说是没有哪一种规则是完全适用的LPDDR5的 通用规则的,不同的单板可能板厚,板材,层数,SOC以及DDR的型号都是不同的,一般的做法就是严格按照SOC手册上的LPDDR5的要求加上仿真同事给的建议修改优化就好了,我们下期文章不见不散。我们知道想要做好一个LPDDR颗粒,需要考虑的是因素有很多例如,电源完整性,信号完整性,层叠的设计,布局的摆放,布线的合理规划,去耦电容的摆放等等。

weixin_45223454的博客 3164

Spring MVC确定目标方法POJO类型入参的过程

Spring MVC确定目标方法POJO类型入参的过程 package handlers; import Model.User; import org.springframework.http.HttpRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.a...

Kevin M 338

rv1126 读取sensor输入,输出到屏幕显示【RK_MPI API接口】

rv1126 libdrm VO

学习记录 1万+

SpringMVC确定目标方法POJO类型入参的过程

整体总结如下: 1.确定一个key: 1).若目标方法的POJO类型的参数木有使用@ModelAttribute作为修饰,则key为POJO类名第一个字母的小写。 2).若使用@ModelAttribute修饰,则key为@ModelAttribute注解的value属性值. 2.在implicitModel(相当于request)中查找key对应的对象,若存在,则作为入参传入。 1).

gpf951101的博客 700

中国1990-2021连续30年土地利用CLCD数据分享

CLCD(China Land Cover Dataset)数据集是由武汉大学黄昕老师基于Google Earth Engine上的335,709景Landsat数据制作的中国年度土地覆盖数据集。为了提高CLCD的时空一致性,还提出了一种包含时空滤波和逻辑推理的后处理方法。该数据集最大的优势在于每年30米的土地利用分类结果,且连续覆盖了30年时间。相比其他产品如GLC_FCS30、Global30、AGLC2000_2015、FROM-GLC10、ESA10、ESRI10等,CLCD在时间分辨率上更高。

qq_48539301的博客 1万+

Spring MVC确定目标方法POJO类型入参的流程

Spring MVC确定目标方法POJO类型入参的流程 1 确定一个Key目标方法参数列表中存不存在使用@ModelAttribute修饰的参数,其中若存在该修饰,并且有name属性,则依据name属性给定的key来确定。 若不存在则按照对应类型首字母小写的key来确定。 2 在implicitModel 中按照key来查找对象,若存在则作为参数传入。 3 若implicitModel 中不存在ke

lyfuci10的博客 321

基于CNN的三相故障识别算法及实现(Matlab)

通过预处理数据、构建CNN模型、训练与评估模型等步骤,我们可以准确快速地识别三相故障。现代电力系统中,三相故障是一种常见的故障情况,可以导致电网中断、设备损坏甚至火灾等严重后果。本文将介绍基于卷积神经网络(CNN)的三相故障识别算法,并提供Matlab源代码实现。首先,将原始信号分为训练集和测试集。然后,对输入信号进行归一化处理,确保数据在合适的范围内。CNN适用于处理二维数据,所以我们可以将输入信号看作是时间序列数据和特征(如电压、电流等)的二维矩阵。在开始之前,我们需要一个包含正常和故障样本的数据集。

学习使你进步。 384

java培训技术SpringMVC 确定目标方法 POJO 类型入参的过程

若在 @ModelAttribute 标记的方法中在 Map 中保存过, 且 key 和 1) 确定的 key。则 key 为 POJO 类名第一个字母的小写。一致, 则会获取到.value 属性值.

zjjcchina的博客 376

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SpringMVC 4.0 确定目标方法POJO类型入参的过程

1.确定一个key:1.>若牧宝方法的POJI类型的参数木有使用@ModelAttribute作为修饰,则key为POJO类名(全是小写的)2.>若使用了@ModelAttribute来修饰,则key为@ModelAttribute注解的value属性值2.在implicitModel中查找key对应的对象,若存在的键和目标方法参数类型的第一个字母小写的字符串一致则作为入参传入若在@ModelAtt

好久不见 463

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SpringMVC处理模型数据及SpringMVC 确定目标方法 POJO 类型入参的过程

SpringMVC处理模型数据及SpringMVC 确定目标方法 POJO 类型入参的过程

wenhuaguisu的博客 601

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

学习SpringMVC(十)之确定目标方法POJO类型参数

SpringMVC 确定目标方法 POJO 类型入参的过程 1. 确定一个 key: 1). 若目标方法的 POJO 类型的参数木有使用 @ModelAttribute 作为修饰, 则 key 为 POJO 类名第一个字母的小写 2). 若使用了  @ModelAttribute 来修饰, 则key 为 @ModelAttribute 注解的 value 属性值.  2. 在 implic

像风一样奔跑 1744

SpringMVC----- @ModelAttribute注解

@ModelAttribute注解 @ModelAttribute注解之使用场景 @ModelAttribute注解之示例代码 在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了 @ModelAttribute 的方法。 在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取...

Ymh_Sirius的博客 448

Spring MVC 中“拦截器”处理模型数据 (二) @ModelAttribute

在这里强烈建议看看我之前写的几篇关于SpringMVC的博客,都是串通的。@ModelAttribute这个是SpringMVC中处理模型数据的最难也是最重要的点。相当于以前Struct的拦截器。用途:比如我们要修改一个对象的部分数据,按照以前的思维,new一个对象保存数据,然后赋值,把不修改数据先拿出来保存起来。但是这个已经Out了, 在SpringMVC中,是拿到数据库的实例,然后把传进来的值也

杜鲁门的博客 4072

springmvc写接口

而此时update对象中参数的key为POJO类名首字母小写,也是user,也就是在implicitModel中存在该key和对应的POJO对象。3、座implicitModel中不存在key对应的对象,则检查当前的Handler是否使用了@SessionAttributes注解修饰,若使用了该注解,且@SessionAttribute注解的value属性值中包含了key,则会从HttpSession中获取key所对应的value值,若存在则直接传入到目标方法的入参中,若不存在则将抛出异常。

2301_78671173的博客 601

Spring-MVC ---- ModelAttribute

作用: 先从数据库拿数据创建一个对象,然后再从表单传来的数据中拿数据进行修改。 public class SpringMVCTest { @ModelAttribute public void getUser(@RequestParam(value="id",request=false)) Integer id, Map<String,Obje...

qq_39248664的博客 169

Spring mvc原理解析

1.@RequestMapping @RequestMapping注解来映射URl,返回值会通过视图解析器解析为实际的物理试图,对于org.springframework.web.servlet.view.InternalResourceViewResolver试图通过prefix+returnVal+后缀这样的方式得到实际的物理试图,然后做转发操作. <bean class=*"org...

m0_37604110的博客 193

@ModelAttribute运行流程

@ModelAttribute运行流程: * 1. 执行 @ModelAttribute 注解修饰的方法: 从数据库中取出对象, 把对象放入到了 Map 中. 键为: user * 2. SpringMVC 从 Map 中取出 User 对象, 并把表单的请求参数赋给该 User 对象的对应属性. * 3. SpringMVC 把上述对象传入目标方法的参数. * * 注意: 在 @M...

weixin_33815613的博客 253

SpringMVC笔记三:处理模型数据

使用原生Servlet API作为入参 Handler 方法可以接受的ServletAPI 类型的参数 @RequestMapping(&amp;amp;amp;quot;/testServletAPI&amp;amp;amp;quot;) public void testServletAPI(HttpServletRequest httpServletRequest, Http...

SoP_KaiXinHaHa的博客 326

SpringMVC POJO入参过程分析

SpringMVC确定目标方法POJO类型的入参过程 1、确认一个key:   (1)、若目标方法的POJO类型的参数没有使用@ModelAttribute作为修饰,则key为POJO类名第一个字母的小写   (2)、若使用@ModelAttribute来修饰,则key为@ModelAttibute注解的value属性值。 @RequestMapping("/updateUs...

dekejiao5921的博客 198
上一篇: Spring MVC @ModelAttribute 源码分析流程
下一篇: Spring MVC如何解析视图
jeffery0628
博客等级 码龄11年 39粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值