首頁  >  文章  >  Java  >  您可以使用 Ajax 將請求正文中的多個變數傳遞給 Spring MVC 控制器嗎?

您可以使用 Ajax 將請求正文中的多個變數傳遞給 Spring MVC 控制器嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-10 02:04:021041瀏覽

Can You Pass Multiple Variables in a Request Body to a Spring MVC Controller Using Ajax?

使用Ajax 將@RequestBody 中的多個變數傳遞到Spring MVC 控制器

嘗試將請求正文中的多個變數傳遞給Spring 時使用Ajax 的MVC控制器,您可能會面臨是否有必要將變數包含在支援中的問題

原始查詢表達了使用以下方法實現此目的的願望:

@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"
    }
}

困境在於@RequestBody 需要對應到單一對象,這使得在請求正文中使用多個參數具有挑戰性。

雖然上述解決方法涉及Holder 物件是一個有效的解決方案,使用Map 物件可以使用另一種方​​法:

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

此方法提供了一種靈活的方法來處理傳遞的多個變數在請求正文中,允許透過映射鍵存取它們。

此外,如果您喜歡綁定到Jackson 的ObjectNode 以使用完整的JSON 樹,您可以使用以下內容:

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

這些替代方案為您提供了處理請求正文中多個變數的多種選項,讓您可以靈活地選擇最適合您特定需求的方法。

以上是您可以使用 Ajax 將請求正文中的多個變數傳遞給 Spring MVC 控制器嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn