Berbagai Metode Pengikatan Parameter SpringMVC
1. Jenis data dasar (mengambil int sebagai contoh, yang lain serupa):
Kode Pengontrol:
@RequestMapping ("Sayth.do") Test public void (int count) {}Kode formulir:
<Form Action = "Sayth.do" Method = "Post"> <input name = "count" value = "10" type = "text" />......</ form>
Jika nilai nama input dalam formulir konsisten dengan nama variabel parameter dari pengontrol, pengikatan data dapat diselesaikan. Jika tidak konsisten, Anda dapat menggunakan anotasi @RequestParam. Perlu dicatat bahwa jika tipe data dasar didefinisikan dalam parameter metode pengontrol, tetapi data yang dikirimkan dari halaman adalah nol atau "", pengecualian konversi data akan terjadi. Dengan kata lain, perlu untuk memastikan bahwa data yang disahkan oleh formulir tidak dapat menjadi nol atau "", jadi, selama proses pengembangan, yang terbaik adalah menentukan tipe data parameter sebagai jenis pengemasan untuk data yang mungkin kosong, lihat contoh berikut.
2. Jenis Pengemasan (mengambil integer sebagai contoh, yang lain serupa):
Kode Pengontrol:
@RequestMapping ("Sayth.do") tes void publik (jumlah integer) {}Kode formulir:
<Form Action = "Sayth.do" Method = "Post"> <input name = "count" value = "10" type = "text" />......</ form>
Ini pada dasarnya sama dengan tipe data dasar. Perbedaannya adalah bahwa data yang dilewatkan oleh formulir dapat menjadi nol atau "". Kode di atas adalah sebagai contoh. Jika num dalam formulir adalah "" atau tidak ada input num dalam formulir, maka nilai num dalam parameter metode pengontrol adalah nol.
3. Jenis Objek Kustom:
Kode Model:
pengguna kelas publik {private string firstName; Private String LastName; Public String getFirstName () {return firstName; } public void setFirstName (String firstName) {this.firstName = firstName; } public String getLastName () {return lastName; } public void setLastName (String LastName) {this.LastName = LastName; }}Kode Pengontrol:
@RequestMapping ("Sayth.do") Public Void Test (pengguna pengguna) {}Kode formulir:
<Form Action = "Sayth.do" Method = "Post"> <input name = "firstName" value = "zhang" type = "text"/> <input name = "lastname" value = "tiga" type = "text" />......</ form>
Ini sangat sederhana, cukup cocokkan nama properti objek dan nilai input satu per satu.
4. Kustomisasi Jenis Objek Senyawa:
Kode Model:
Public Class ContactInfo {Private String Tel; alamat string pribadi; Public String gettel () {return tel; } public void settel (string tel) {this.tel = tel; } public String getAddress () {alamat kembali; } public void setAddress (Alamat String) {this.address = alamat; }} pengguna kelas publik {private string firstName; Private String LastName; contactInfo contactInfo pribadi; Public String getFirstName () {return firstName; } public void setFirstName (String firstName) {this.firstName = firstName; } public String getLastName () {return lastName; } public void setLastName (String LastName) {this.LastName = LastName; } public contactInfo getContactInfo () {return contactInfo; } public void setContactInfo (contactInfo contactInfo) {this.contactInfo = contactInfo; }} Kode Pengontrol:
@RequestMapping ("Sayth.do") Test public void (pengguna pengguna) {System.out.println (user.getFirstName ()); System.out.println (user.getLastName ()); System.out.println (user.getContactInfo (). GetTel ()); System.out.println (user.getContactInfo (). GetAddress ());} Kode formulir:
<form action="saysth.do" method="post"><input name="firstName" value="Zhang" /><br><input name="lastName" value="Three" /><br><input name="contactInfo.tel" value="13809908909" /><br><input name="contactInfo.address" value="Beijing Haidian" /> <br> <input type = "kirim" value = "save" /> </form>
Ada atribut ContactInfo di objek pengguna. Kode dalam pengontrol konsisten dengan apa yang dikatakan di poin 3. Namun, dalam kode formulir, Anda perlu menggunakan "nama atribut (atribut jenis objek). ATRIBUT NAMA" Untuk menyebutkan nama input.
5. Daftar Ikatan:
Daftar perlu terikat pada objek, dan tidak dapat ditulis secara langsung dalam parameter metode pengontrol.
Kode Model:
pengguna kelas publik {private string firstName; Private String LastName; Public String getFirstName () {return firstName; } public void setFirstName (String firstName) {this.firstName = firstName; } public String getLastName () {return lastName; } public void setLastName (String LastName) {this.LastName = LastName; }} Public Class UserListForm {Private List <user> pengguna; Daftar Publik <User> getUsers () {pengembalian pengguna; } public void setUsers (Daftar <User> pengguna) {this.users = pengguna; }} Kode Pengontrol:
@RequestMapping ("Sayth.do") tes public void (userListForm userform) {for (user user: userform.getUsers ()) {system.out.println (user.getFirstName () + " -" + user.getLastName ()); }}Kode formulir:
<Form Action = "Sayth.do" Method = "Post"> <able> <Thead> <tr> <th> Nama Depan </th> <th> nama belakang </th> </tr> </thead> <tfoot> <tr> <td colspan = "2"> <input = "kirim" value = "save"/td </td> </TR/TRBID </tpody </ttfo name="users[0].firstName" value="aaa" /></td><td><input name="users[0].lastName" value="bbb" /></td></tr><tr><td><input name="users[1].firstName" value="ccc" /></td><td><input name = "pengguna [1] .lastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "pengguna [2] .firstname" value = "eee"/> </td> <td> <input name = "pengguna [2] .lastName" value = "fff" /> </td> </tr> </tbody> </able> </form>
Faktanya, ini agak mirip dengan pengikatan data ContantInfo di objek pengguna di titik ke -4, tetapi properti dalam objek UserListForm di sini didefinisikan sebagai daftar, daripada objek kustom biasa. Oleh karena itu, Anda perlu menentukan subskrip daftar dalam formulir. Perlu disebutkan bahwa Spring akan membuat objek daftar dengan nilai subskrip maksimum sebagai ukuran. Oleh karena itu, jika ada penambahan dinamis dan penghapusan baris dalam bentuk, perhatian khusus harus dibayarkan. Misalnya, setelah tabel digunakan, nilai subskrip akan tidak konsisten dengan ukuran aktual setelah pengguna menghapus baris dan menambahkan baris beberapa kali selama penggunaan. Pada saat ini, hanya objek dalam daftar yang akan memiliki nilai dalam formulir yang memiliki subskrip, jika tidak itu akan menjadi nol. Lihat contoh:
Kode formulir:
<Form Action = "Sayth.do" Method = "Post"> <able> <Thead> <tr> <th> Nama Depan </th> <th> nama belakang </th> </tr> </thead> <tfoot> <tr> <td colspan = "2"> <input = "kirim" value = "save"/td </td> </TR/TRBID </tpody </ttfo name="users[0].firstName" value="aaa" /></td><td><input name="users[0].lastName" value="bbb" /></td></tr><tr><td><input name="users[1].firstName" value="ccc" /></td><td><input name = "pengguna [1] .lastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "pengguna [20] .firstname" value = "eee"/> </td> <td> <input name = "pengguna [20]. /> </td> </tr> </tbody> </able> </form>
Pada saat ini, userform.getUsers () di Controller mendapatkan ukuran daftar menjadi 21, dan tidak satu pun dari 21 objek pengguna ini yang nol, tetapi nama depan dan nama terakhir di objek pengguna dari 2 hingga 19 adalah nol. Hasil Cetak:
aaa - bbbccc - dddnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull -nullnull - nullnull -nullnull -nullull -nullnull -nullnull nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullee - fff
6. Setel Binding:
Set mirip dengan daftar, dan juga perlu terikat pada objek, dan tidak dapat ditulis secara langsung dalam parameter metode pengontrol. Namun, ketika mengikat data set, jumlah objek model yang sesuai harus ditambahkan terlebih dahulu dalam objek SET.
Kode Model:
pengguna kelas publik {private string firstName; Private String LastName; Public String getFirstName () {return firstName; } public void setFirstName (String firstName) {this.firstName = firstName; } public String getLastName () {return lastName; } public void setLastName (String LastName) {this.LastName = LastName; }} Public Class UsersetForm {Private Set <User> Users = New HashSet <User> (); Public UsersetForm () {Users.add (User baru ()); user.add (pengguna baru ()); user.add (pengguna baru ()); } set publik <user> getUsers () {return pengguna; } public void setUsers (set <user> pengguna) {this.users = pengguna; }}Kode Pengontrol:
@RequestMapping ("Sayth.do") tes public void (UsersetForm UserForm) {for (pengguna pengguna: userform.getUsers ()) {System.out.println (user.getFirstName () + " -" + user.getLastName ()); }}Kode formulir:
<Form Action = "Sayth.do" Method = "Post"> <able> <Thead> <tr> <th> Nama Depan </th> <th> nama belakang </th> </tr> </thead> <tfoot> <tr> <td colspan = "2"> <input = "kirim" value = "save"/td </td> </TR/TRBID </tpody </ttfo name="users[0].firstName" value="aaa" /></td><td><input name="users[0].lastName" value="bbb" /></td></tr><tr><td><input name="users[1].firstName" value="ccc" /></td><td><input name = "pengguna [1] .lastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "pengguna [2] .firstname" value = "eee"/> </td> <td> <input name = "pengguna [2] .lastName" value = "fff" /> </td> </tr> </tbody> </able> </form>
Pada dasarnya mirip dengan ikatan daftar.
Perlu dicatat bahwa jika nilai subskrip maksimum lebih besar dari ukuran set, org.springframework.beans.invalidpropertyException akan dilemparkan. Oleh karena itu, agak tidak nyaman saat menggunakannya.
7. Peta Binding:
Peta adalah yang paling fleksibel. Ini juga perlu terikat pada objek dan tidak dapat ditulis secara langsung dalam parameter metode pengontrol.
Kode Model:
pengguna kelas publik {private string firstName; Private String LastName; Public String getFirstName () {return firstName; } public void setFirstName (String firstName) {this.firstName = firstName; } public String getLastName () {return lastName; } public void setLastName (String LastName) {this.LastName = LastName; }} kelas publik usermapform {private map <string, user> pengguna; peta publik <string, user> getUsers () {return pengguna; } public void setUsers (peta <string, user> user) {this.users = user; }} Kode Pengontrol:
@RequestMapping ("Sayth.do") Test public void (UserMapform UserForm) {for (Map.ENTRY <String, User> Entry: UserForm.getUsers (). Entryset ()) {System.out.println () () () (): " + entry.getValue (). GetFirstName () () () ()." -GetValue (). }} Kode formulir:
<Form Action = "Sayth.do" Method = "Post"> <able> <Thead> <tr> <th> Nama Depan </th> <th> nama belakang </th> </tr> </thead> <tfoot> <tr> <td colspan = "2"> <input = "kirim" value = "save"/td </td> </TR/TRBID </tpody </ttfo name = "Users ['x']. FirstName" value = "aaa"/> </td> <td> <input name = "Users ['x']. LastName" value = "bbb"/> </td> </tr> <tr> <td> <input name = "Users ['y']. name="users['y'].lastName" value="ddd" /></td></tr><td><td><input name="users['z'].firstName" value="eee" /></td><td><input name="users['z'].lastName" value="ffff" /> </td> </tr> </tbody> </able> </form>
Hasil Cetak:
X: AAA - BBBY: CCC - DDDZ: EEE - FFF
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.