Saya baru -baru ini mengalami masalah di mana saya harus lulus dalam sekelompok objek dalam proyek. Di masa lalu, saya hanya menemukan kasus di mana satu objek, banyak objek, atau satu set array dilewatkan. Jarang untuk melihat apakah sekelompok objek dilewatkan. Jadi rasanya agak sulit ketika Anda mengalami masalah ini. Saya pikir mungkin untuk menyelesaikannya dengan cara ini.
@RequestMapping ("save1") public void save1 (rencana rencana, daftar <planitem> planitems, httpservletResponse response) {// todo lebih ... addMessage (respons, message_type_success, null, message_success);}Tetapi kemudian saya mengetahui bahwa saya terlalu bodoh dan naif. Metode ini tidak dapat mengikat parameter sama sekali. Beberapa orang mengatakan bahwa musim semi harus mengorbankan bagian dari kinerjanya dibandingkan dengan struts. Tapi saya tidak memiliki penelitian tentang musim semi dan struts, saya hanya menggunakannya sebagai alat. Jadi, saya benar -benar tidak tahu mengapa. Pergi jauh, kembali ke topik. Ada solusi lain secara online. Beginilah caranya
Public Class PersonList {Private List <Fon> orang; Daftar Publik <Fon> getPerson () {orang kembali; } public void setPerson (Daftar <Son> orang) {this.person = orang; }} Di Controller:
@RequestMapping (value = "xxx", Method = requestMethod.post) tes void publik (personlist person) {// Transtipate Person}} Halaman harus ditulis seperti ini:
<Form id = "Form" Action = "test/test.do" Method = "Post"> <input type = "text" name = "person [0] .UserName" value = "jobs"/> <input type = "text" name = "person [0] .age" nilai = "55"/> <br/> <input type = "text" name = "name". name = "Person [1] .age" value = "21"/> <br/> <input type = "kirim"> <sorm>
Tapi saya mencoba metode ini, tetapi masih tidak berhasil. Saya tidak tahu apakah saya terlalu bodoh atau mengapa.
Setelah banyak tikungan dan belokan, solusi lain ditemukan. Lewati string JSON dari objek daftar ke latar belakang. Setelah latar belakang menerima parameter. Kemudian konversi JSON ke objek. Kode front-end dikecualikan, kode latar belakang adalah sebagai berikut.
@RequestMapping ("save") public void save (Plan Plan, String PlanItemjson, httpservletResponse Response) {List <PlanItem> parseArray = json.parseArray (PlanItemjson, Planitem.class); // TODO apa yang Anda inginkan addMessage (respons, message_type_success, null, message_success);}Tetapi ada masalah kecil dengan ini, yaitu, string JSON akan secara otomatis ditambahkan dengan kutipan ganda di bagian kunci di bagian sebelumnya. Saat decoding di latar belakang, kutipan ganda lolos sebagai ""; "jadi Anda juga perlu mengonversi" ";" untuk menggandakan kutipan. Yaitu kode terakhirnya
@RequestMapping ("save") public void save (Plan Plan, String Planitemjson, HttpServletResponse Response) {Planitemjson = Planitemjson.Replaceall ("", "/"); Daftar <Planitem> ParSeArray = json.parsarray (planitemson, planitem, planitem. Message_type_success, null, message_success);}Setelah pengujian, metode ini juga berfungsi untuk objek daftar dan daftar objek.
PS: Untuk meningkatkan ketahanan program, Anda dapat memverifikasi JSON setelah melarikan diri dari objek JSON, yang menghindari kesalahan dalam JSON yang beralih ke objek Java.
Atau gunakan metode yang lebih kejam untuk melakukan operasi mencoba operasi saat JSON beralih ke daftar.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.