交流
商城
MCN
登入
注册
首页
提问
分享
讨论
建议
公告
动态
发表新帖
发表新帖
springmvc第4-demo-3:RequestParamMapMethodArgumentResolver
分享
未结
0
850
李延
LV6
2021-05-29
悬赏:20积分
# 作用 用于处理RequestParam注解,并且参数类型是Map的数据 # 示例 Cotroller如下: ```java @PostMapping("map/test") private List<String> postTest(@RequestParam Map<String,Object> map){ return new ArrayList<>(); } ``` 发送请求 ```java POST http://127.0.0.1:8080/requestParam/map/test?name=1244 Content-Type: application/x-www-form-urlencoded name=liy&a=123&b=rit ``` 结果如下  我们看到所有参数都以kv格式被feng z封装在map中 # 源码 ## supportsParameter ```java @Override public boolean supportsParameter(MethodParameter parameter) { RequestParam requestParam = parameter.getParameterAnnotation(RequestParam.class); return (requestParam != null && Map.class.isAssignableFrom(parameter.getParameterType()) && !StringUtils.hasText(requestParam.name())); } ``` 我们看到这个类处理了RequestParam注解并且类型是map的参数 ## resolveArgument 去除掉 对于文件参数的处理外,我们只有一下代码 ```java Map<String, String[]> parameterMap = webRequest.getParameterMap(); Map<String, String> result = CollectionUtils.newLinkedHashMap(parameterMap.size()); parameterMap.forEach((key, values) -> { if (values.length > 0) { result.put(key, values[0]); } }); return result; ``` 整个代码逻辑很简单,就是获取到所有参数然后保存到map中
回帖
消灭零回复
提交回复
热议榜
java 相关知识分享
8
好的程序员与不好的程序员
6
写给工程师的十条精进原则
5
spring boot以jar包运行配置的logback日志文件没生成
5
一步一步分析SpringBoot启动源码(一)
5
MockMvc测试
5
【吐槽向】是不是有个吐槽的板块比较好玩
4
logstash jdbc同步mysql多表数据到elasticsearch
3
IntelliJ IDEA 优质License Server
3
.gitignore忽略规则
3
SpringBoot启动源码分析
3
一步一步分析SpringBoot启动源码(三)
3
2
一步一步分析SpringBoot启动源码(二)
2
积分不够将无法发表新帖
2
官方产品
Meta-Boot - 基于MCN
MCN - 快速构建SpringBoot应用
微信扫码关注公众号