使用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中文網其他相關文章!