当前位置: 首页 > 知识库问答 >
问题:

Spring@requestparam map在POST方法中不起作用

郜驰
2023-03-14

我从Spring文档中获得了以下内容:

现在我已经为测试目的创建了一个控制器。它有一个GET和一个POST方法,每个方法都只使用@requestparam java.util.map作为参数。在方法体中,我只是试图打印地图的大小。当我只在GET方法中发送请求(GET/post)时,映射包含任何键/值对。我在Firefox中使用海报插件,我发送了三个参数。

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请求一起工作,或者我是否需要修改一些东西来使其工作?

谢了。

共有1个答案

冯庆
2023-03-14

实际上,它适用于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!");
    }
});
 类似资料:
  • 我尝试使用post方法生成表单,我想检查字段是否用isset()填充。但即使字段为空,isset也会返回true。 下面是一个简化的代码:(页面名称:test.php,post方法指向自身) 当您提交时,它总是响应“字段集”,即使您没有在“测试”输入中输入任何内容。 谢谢你的回答!

  • 我使用HttpURLConnection通过POST向服务器发送数据。我设置标头,然后获取输出流并写入一些字节,然后关闭输出流。 我试图从给定的网址获取时间表细节的下一页。但是有些我怎么也得不到结果。请帮助任何人,如果你知道这个代码中的任何问题。 我看到的是有错误的第一页,而不是第二页。"您选择的电台组合无效。请致电LIRR旅游信息中心,电话号码是(718) 217-5477,向客服代表咨询更多信

  • 所以我需要邮递员的文件。问题是我的API需要身份验证,所以我不能使用Swagger来测试它们。当我从控制器中删除授权并使用Swagger时,它会工作,但使用Postman时,它会返回以下错误。 请求的邮递员标题:

  • 这是用于测试的curl命令: curl-h“content-type:application/json”-x post-d“[{id:2,title:”My first note title Update“,note:”My first note Update“,CreateTime:1461737231000,LastUpdateTime:1461737231000,LastUpdateTime

  • index.js//后端 付款js//前端Raect组件 axios.js xhr。js:177个职位http://localhost:3000/payments/create?total=4534404(未找到) 未捕获(promise)错误:请求失败,状态代码404在createError(createError.js:16)在结算(settle.js:17)在XMLHttpRequest.h

  • 和UserServiceImpl: 在前端,我创建了一个简单的表,如下所示: 现在,当我启动我的应用程序并单击删除按钮时,我在网站上出现了这样的错误:当前线程没有实际事务可用的EntityManager-不能可靠地处理“Remove”调用;嵌套异常是javax.persistence.TransactionRequiredException:当前线程没有实际事务可用的EntityManager-不