Spring @RequestParam 参数未在 POST 方法中传递

2023-11-22

我在 Spring 和发布请求方面遇到问题。我正在为 Ajax 调用设置一个控制器方法,请参阅下面的方法定义

@RequestMapping(value = "add.page", method = RequestMethod.POST)
@ResponseBody
public Object createComment(
        @RequestParam(value = "uuid", required = false) String entityUuid,
        @RequestParam(value = "type", required = false) String entityType,
        @RequestParam(value = "text", required = false) String text,
        HttpServletResponse response) {
        ....

无论我以何种方式进行 HTML 调用,@RequestParam参数始终为空。我还有很多其他的方法,看起来像这样,主要区别是其他的是 GET 方法,而这个是 POST 方法。是不是不能使用@RequestParam使用 POST 方法?

我正在使用 Spring 版本 3.0.7.RELEASE - 有谁知道问题的原因可能是什么?


阿贾克斯代码:

$.ajax({
    type:'POST',
    url:"/comments/add.page",
    data:{
        uuid:"${param.uuid}",
        type:"${param.type}",
        text:text
    },
    success:function (data) {
        //
    }
});

问题原来是我调用该方法的方式。我的ajax代码传递了请求正文中的所有参数,而不是作为请求参数,所以这就是为什么我的@RequestParam参数全部为空。我将我的ajax代码更改为:

$.ajax({
    type: 'POST',
    url: "/comments/add.page?uuid=${param.uuid}&type=${param.type}",
    data: text,
    success: function (data) {
        //
    }
});

我还更改了控制器方法以从请求正文中获取文本:

@RequestMapping(value = "add.page", method = RequestMethod.POST)
@ResponseBody
public Object createComment(
        @RequestParam(value = "uuid", required = false) String entityUuid,
        @RequestParam(value = "type", required = false) String entityType,
        @RequestBody String text,
        HttpServletResponse response) {

现在我得到了我期望的参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring @RequestParam 参数未在 POST 方法中传递 的相关文章

随机推荐