首页 > Java > java教程 > 我可以在没有支持对象的情况下使用 @RequestBody 将多个变量传递给 Spring MVC 控制器吗?

我可以在没有支持对象的情况下使用 @RequestBody 将多个变量传递给 Spring MVC 控制器吗?

Linda Hamilton
发布: 2024-11-11 12:40:03
原创
1068 人浏览过

Can I Pass Multiple Variables to a Spring MVC Controller with @RequestBody without a Backing Object?

使用 Ajax 将 @RequestBody 中的多个变量传递给 Spring MVC 控制器

问题:

将 @RequestBody 中的多个变量传递给 Spring MVC 是否需要将参数包装在支持对象中使用 Ajax 进行控制器?

讨论:

问题源于需要在 @RequestBody 中以 JSON 形式传递两个字符串“str1”和“str2”。然而,最初的方法:

@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"
    }
}
登录后复制

答案:

虽然使用支持对象是一种可行的方法,但另一种解决方案是使用 Map 或 ObjectNode 直接绑定到JSON,无需创建单独的对象类。

对于地图:

@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 将多个变量传递给 Spring MVC 控制器吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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