Melalui Berbilang Pembolehubah dalam @RequestBody kepada Pengawal Spring MVC dengan Ajax
Soalan:
Adakah parameter pembalut dalam objek sandaran diperlukan untuk menghantar berbilang pembolehubah dalam @RequestBody kepada pengawal Spring MVC dengan Ajax?
Perbincangan:
Persoalannya berpunca daripada keperluan untuk lulus dua rentetan, "str1" dan "str2," sebagai JSON dalam @RequestBody. Walau bagaimanapun, pendekatan awal:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody String str1, @RequestBody String str2) {}
memerlukan struktur JSON dengan setiap pembolehubah diisytiharkan secara eksplisit:
{ "str1": "test one", "str2": "two test" }
Walau bagaimanapun, adalah lebih mudah untuk menggunakan objek sokongan, seperti yang dilihat dalam:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Holder holder) {}
yang boleh digunakan dengan JSON berikut:
{ "holder": { "str1": "test one", "str2": "two test" } }
Jawapan:
Walaupun menggunakan objek sokongan adalah pendekatan yang berdaya maju , penyelesaian alternatif ialah menggunakan Map atau ObjectNode untuk mengikat terus ke JSON tanpa membuat kelas objek yang berasingan.
Untuk Peta:
@RequestMapping(value = "/Test", method = RequestMethod.POST) @ResponseBody public boolean getTest(@RequestBody Map<String, String> json) { //json.get("str1") == "test one" }
Untuk ObjectNode:
public boolean getTest(@RequestBody ObjectNode json) { //json.get("str1").asText() == "test one" }
Atas ialah kandungan terperinci Bolehkah saya Lulus Berbilang Pembolehubah kepada Pengawal Spring MVC dengan @RequestBody tanpa Objek Sandaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!