Melalui Berbilang Parameter dalam @RequestBody kepada Pengawal MVC Spring menggunakan Ajax
Apabila cuba menghantar berbilang parameter kepada pengawal Spring MVC menggunakan @ RequestBody, ramai pembangun menghadapi persoalan sama ada perlu untuk membungkus parameter dalam sandaran objek.
Pendekatan Awal:
Pada mulanya, anda boleh cuba melakukan perkara berikut:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}
Dengan muatan JSON seperti ini:
{ "str1": "test one", "str2": "two test" }
Walau bagaimanapun, anda mungkin mendapati bahawa pendekatan ini tidak berfungsi sebagai dijangka.
Pendekatan Objek Pembungkus:
Untuk mengatasi isu ini, pendekatan seterusnya ialah membungkus parameter dalam objek sandaran:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Holder holder) {}
Ini memerlukan muatan JSON seperti ini:
{ "holder": { "str1": "test one", "str2": "two test" } }
Alternatif Pilihan:
Sebagai alternatif, anda boleh menukar RequestMethod kepada GET dan menggunakan @RequestParam dalam rentetan pertanyaan. Pilihan lain ialah menggunakan @PathVariable dengan sama ada RequestMethod.
Menggunakan Peta atau ObjectNode:
Jika membalut objek sokongan tidak diingini, anda boleh menggunakan Peta atau ObjectNode Jackson untuk mengikat berbilang parameter @RequestBody:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Map<String, String> json) { //json.get("str1") == "test one" }
Atau:
public boolean getTest(@RequestBody ObjectNode json) { //json.get("str1").asText() == "test one" }
Atas ialah kandungan terperinci Bagaimana untuk Lulus Berbilang Parameter ke Pengawal MVC Spring menggunakan @RequestBody dengan Ajax?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!