如何在Spring MVC控制器中将Form数据作为Map获取?

Mor*_*Adi 16 java spring spring-mvc

我有一个复杂的html表单,使用java脚本动态创建.

我想在java中将键值对的映射作为Map并存储它们.

这是我的控制器来获取提交的数据.

@RequestMapping(value="/create", method=RequestMethod.POST, 
    consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String createRole(Hashmap<String, Object) keyVals) {
    ....
}  
Run Code Online (Sandbox Code Playgroud)

但我的地图是空的.

如何在Spring mvc控制器中将表单数据作为名称 - 值对的映射?

opt*_*nal 31

您还可以使用@RequestBodyMultiValueMap

@RequestMapping(value="/create",
                method=RequestMethod.POST,
                consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String createRole(@RequestBody MultiValueMap<String, String> formData){
 // your code goes here
}
Run Code Online (Sandbox Code Playgroud)

现在您可以获取参数名称及其值.

MultiValueMap在Spring utils包中

  • 我收到"不支持内容类型"问题 (3认同)
  • 就我而言,自从迁移到 Spring Boot 2.6 以来,我陷入了困境。接收到的@RequestBody变量中没有数据。 (2认同)

Mor*_*Adi 5

我刚刚找到了解决方案

@RequestMapping(value="/create", method=RequestMethod.POST, 
        consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String createRole(HttpServletRequest request) {
    Map<String, String[]> parameterMap = request.getParameterMap();
    ...
}
Run Code Online (Sandbox Code Playgroud)

这样我就有了提交参数的地图.