Java 如何在SpringMVC控制器中以映射的形式获取表单数据?
我有一个用java脚本动态创建的复杂html表单 我想在java中获得键值对的映射作为映射并存储它们 这是我的控制器,用于获取提交的数据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)
@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;
}