首页 > Java > java教程 > 如何使用 @RequestBody 和 Ajax 将多个参数传递给 Spring MVC 控制器?

如何使用 @RequestBody 和 Ajax 将多个参数传递给 Spring MVC 控制器?

Patricia Arquette
发布: 2024-11-11 12:47:02
原创
1010 人浏览过

How to Pass Multiple Parameters to a Spring MVC Controller using @RequestBody with Ajax?

使用 Ajax 将 @RequestBody 中的多个参数传递到 Spring MVC 控制器

尝试使用 @ 将多个参数传递到 Spring MVC 控制器时RequestBody,许多开发人员都会遇到是否有必要将参数包装在支持对象中的问题。

初始方法:

最初,您可以尝试执行以下操作:

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}
登录后复制

使用如下 JSON 负载:

{
    "str1": "test one",
    "str2": "two test"
}
登录后复制

但是,您可能会发现这种方法无法按预期工作。

包装对象方法:

要解决此问题,下一个方法是将参数包装在支持对象中:

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody Holder holder) {}
登录后复制

这需要如下所示的 JSON 有效负载:

{
    "holder": {
        "str1": "test one",
        "str2": "two test"
    }
}
登录后复制

替代选项:

或者,您可以将 RequestMethod 更改为 GET 并在查询字符串中使用 @RequestParam。另一种选择是将 @PathVariable 与任一 RequestMethod 一起使用。

使用 Map 或 ObjectNode:

如果不希望包装在支持对象中,您可以使用 Map 或Jackson的ObjectNode在@RequestBody中绑定多个参数:

@RequestMapping(value = "/Test", method = RequestMethod.POST)
@ResponseBody
public boolean getTest(@RequestBody Map<String, String> json) {
    //json.get("str1") == "test one"
}
登录后复制

或者:

public boolean getTest(@RequestBody ObjectNode json) {
    //json.get("str1").asText() == "test one"
}
登录后复制

以上是如何使用 @RequestBody 和 Ajax 将多个参数传递给 Spring MVC 控制器?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板