Spring @RequestParam地图 在POST方法中不起作用

从Spring文档中,我采取了以下措施:

指示方法参数应绑定到Web请求参数的注释。在Servlet和Portlet环境中支持带注释的处理程序方法。

如果方法参数是Map或MultiValueMap并且未指定参数名称,则将使用所有请求参数名称和值填充map参数。

现在,我已经创建了一个用于测试目的的控制器。它具有GET和POST方法,并且每个方法均使用 @RequestParam java.util.Map

作为唯一参数。在方法主体中,我仅尝试打印地图的大小。当我仅在GET方法中发送请求(GET /

POST)时,映射包含任何键/值对。我正在Firefox中使用Poster附加组件,并且正在发送 参数。

import java.util.Map;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

@Controller

public class TestController {

@RequestMapping(value="test/method", method = RequestMethod.GET)

@ResponseBody

public String testmethodGet(@RequestParam Map<String, String> params) {

System.out.println("GET: " + params.size()); // prints GET: 3

return "";

}

@RequestMapping(value="test/method", method = RequestMethod.POST)

@ResponseBody

public String testmethodPost(@RequestParam Map<String, String> params) {

System.out.println("POST: " + params.size()); // prints POST: 0

return "";

}

}

你们谁知道为什么@RequestParam Map无法与POST请求一起使用,或者我是否需要更改某些内容才能使其正常工作?

谢谢。

回答:

实际上,它适用于GET和POST方法。完全是我的错 当您实际将参数传递给POST请求时,最初给出的代码将起作用。

考虑以下JS(jQuery)代码如何发送有效请求:

$.ajax({

type: "POST",

url: "test/method",

data: { param1: param1, param2: param2, param3: param3 },

success: function(data) {

console.log("testPost successful!");

},

dataType: "html", // expected return value type

error: function(data, status, error) {

console.log("testPost with errors!");

}

});

以上是 Spring @RequestParam地图 在POST方法中不起作用 的全部内容, 来源链接: utcz.com/qa/413518.html

回到顶部