当我尝试在Spring启动时将Map作为RequestParam传递时,它会将变量名称作为键输出,将完整值作为字符串输出。任何人都可以帮助它为什么表现得很奇怪。我在下面的代码片段
@PostMapping(value = "/", produces = MediaType.ALL_VALUE)
public String testController(@RequestParam Map<String, String> parms) throws Exception {
parms.forEach((k, v) -> System.out.println((k + ":" + v)));
return "";
}
当我传递值
时{&#34;密押&#34;:&#34;测试值&#34;}
它产生的是parms:{&#34; testkey&#34;:&#34; testvalue&#34;}
答案 0 :(得分:1)
也许您想将http请求Body转换为地图,您应该在params上使用 @RequestBody 而不是@RequestParam。 RequestBody注释将http请求体转换为Object,而RequestParam注释将http param(URL参数或表单字段)解析为方法参数。
curl --request POST \
--url http://localhost:9090 \
--header 'Cache-Control: no-cache' \
--header 'Content-Type: application/json' \
--data '{"testkey":"testkey"}'
使用flow * nix命令
测试您的代码POST HTTP/1.1
Host: localhost:9090
Content-Type: application/json
Cache-Control: no-cache
{"testkey":"testkey"}
将发送以下http请求:
<script src="{{asset('../videojs/videojs-dailymotion.js')}}"></script>
<link href="{{asset('../video-js-4.12.14/video-js.css')}}" rel="stylesheet">
<script src="{{asset('../video-js-4.12.14/video.js')}}"></script>
<video id="vid1"
class="video-js vjs-default-skin"
controls
preload="auto"
width="640"
height="360"
data-setup='{ "techOrder": ["dailymotion"], "dmControls" : "1", "src": "http://www.dailymotion.com/video/xg3b7m_meetbuck_creation" }'>
</video>