Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringMVC控制器中以映射的形式获取表单数据?_Java_Spring_Spring Mvc - Fatal编程技术网

Java 如何在SpringMVC控制器中以映射的形式获取表单数据?

Java 如何在SpringMVC控制器中以映射的形式获取表单数据?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个用java脚本动态创建的复杂html表单 我想在java中获得键值对的映射作为映射并存储它们 这是我的控制器,用于获取提交的数据 @RequestMapping(value="/create", method=RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE) public String createRole(Hashmap<String, Object) keyVals)

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

我想在java中获得键值对的映射作为映射并存储它们

这是我的控制器,用于获取提交的数据

@RequestMapping(value="/create", method=RequestMethod.POST, 
    consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String createRole(Hashmap<String, Object) keyVals) {
    ....
}  
@RequestMapping(value=“/create”,method=RequestMethod.POST,
consumes=MediaType.APPLICATION\u FORM\u URLENCODED\u VALUE)

公共字符串createRole(HashmapI,我刚刚找到了一个解决方案

@RequestMapping(value="/create", method=RequestMethod.POST, 
        consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String createRole(HttpServletRequest request) {
    Map<String, String[]> parameterMap = request.getParameterMap();
    ...
}
@RequestMapping(value=“/create”,method=RequestMethod.POST,
consumes=MediaType.APPLICATION\u FORM\u URLENCODED\u VALUE)
公共字符串createRole(HttpServletRequest请求){
Map parameterMap=request.getParameterMap();
...
}

这样我就有了一个提交参数的映射。

您也可以将
@RequestBody
多值映射一起使用
e、 g

@RequestMapping(value=“/create”,
method=RequestMethod.POST,
consumes=MediaType.APPLICATION\u FORM\u URLENCODED\u VALUE)
公共字符串createRole(@RequestBody MultiValueMap formData){
//你的密码在这里
}
现在您可以获得参数名及其值

多值映射在Spring utils包中

试试这个

@RequestMapping(value = "/create", method = RequestMethod.POST, 
        consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String createRole(@RequestParam HashMap<String, String> formData) {
@RequestMapping(value=“/create”,method=RequestMethod.POST,
consumes=MediaType.APPLICATION\u FORM\u URLENCODED\u VALUE)
公共字符串createRole(@RequestParam HashMap formData){

上面的答案已经正确地指出@RequestParam注释缺失。只需添加需要thta的原因

一个简单的GET请求如下所示:

http://localhost:8080/api/foos?id=abc
在控制器中,我们需要将函数参数映射到GET请求中的参数

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam String id) {
    return "ID: " + id;
}

并为参数“id”的映射添加@RequestParam.

@RequestParam
添加到您的方法参数中。我不知道参数名称是什么!我找到了下面发布的问题的解决方案。您不需要参数名称,只需要注释。
@RequestParam
类型映射上的将为您提供所有请求参数。是的,它完成了一项工作;我刚刚测试了您的解决方案,一切正常,肯定是b更好的解决方案。但是有一个问题,multiselect值只返回第一个选定的项目!不是所有选定的值!!当我从HttpServletRequest获取参数时multiselect工作正常!有什么想法吗?用
多值映射代替
多值映射
。我得到的是“不支持内容类型”issueMake确保内容类型为application/x-www-form-urlencoded,从而删除不支持的内容类型。
@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam String id) {
    return "ID: " + id;
}