Verschiedene Parameterbindungsmethoden von SpringMVC
1. Grundlegende Datentyp (int als Beispiel, andere sind ähnlich):
Controller -Code:
@RequestMapping ("Sayth.do") public void test (int count) {}Formcode:
<form action = "Sayth.do" methode = "post"> <Eingabename = "count" value = "10" Typ = "Text" /> .....</ Form>
Wenn der Name des Namens der Eingabe im Formular mit dem Parameter variablen Namen des Controllers übereinstimmt, kann die Datenbindung abgeschlossen werden. Wenn es inkonsistent ist, können Sie die @RequestParam -Annotation verwenden. Es ist zu beachten, dass, wenn der grundlegende Datentyp im Parameter der Controller -Methode definiert ist. Die von der Seite übermittelten Daten sind jedoch NULL oder "", datenkonvertierende Ausnahmen erfolgen. Das heißt, es ist notwendig sicherzustellen, dass die vom Formular übergebenen Daten nicht null oder "" sein können. Während des Entwicklungsprozesses ist es am besten, den Parameterdatentyp als Verpackungstyp für Daten zu definieren, die möglicherweise leer sind, siehe folgendes Beispiel.
2. Verpackungstyp (als Beispiel die Ganzzahl einnehmen, sind andere ähnlich):
Controller -Code:
@RequestMapping ("Sayth.do") Public Void Test (Ganzzahlanzahl) {}Formcode:
<form action = "Sayth.do" methode = "post"> <Eingabename = "count" value = "10" Typ = "Text" /> .....</ Form>
Es ist im Grunde genommen dem grundlegenden Datentyp. Der Unterschied besteht darin, dass die vom Formular übergebenen Daten null oder "" sein können. Der obige Code ist als Beispiel. Wenn die NUM in der Form "" "oder keine Num -Eingabe in der Form vorliegt, ist der NUM -Wert im Parameter der Controller -Methode null.
3.. Benutzerdefinierte Objekttyp:
Modellcode:
public class user {private String firstname; private Zeichenfolge 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; }}Controller -Code:
@RequestMapping ("Sayth.do") public void Test (Benutzerbenutzer) {}Formcode:
<form action = "sagt.
Es ist sehr einfach, stimmen Sie einfach mit dem Eigenschaftsnamen des Objekts und dem Namen der Eingabe nacheinander an.
4. Anpassen von zusammengesetzten Objekttypen:
Modellcode:
öffentliche Klasse ContactInfo {private String tel; private String -Adresse; public String gettel () {return tel; } public void settel (String tel) {this.tel = tel; } public String getAddress () {Rückgabeadresse; } public void setAddress (String -Adresse) {this.address = address; }} public class User {private String firstname; private Zeichenfolge Lastname; private contactInfo contactInfo; 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; }} Controller -Code:
@RequestMapping ("Sayth.do") public void test (Benutzer Benutzer) {System.out.println (user.getFirstName ()); System.out.println (user.getLastName ()); System.out.println (user.getContactInfo (). Gettel ()); System.out.println (user.getContactInfo (). GetAddress ());} Formcode:
<form action = "sayth.do" methode = "post"> <Eingabename = "firstName" value = "zhang" /> <br> <Eingabename = "LastName" value = "Three" /> <br> <Eingabename = "contactInfo.tel" value = "1380908909" /> <Br> <Eingabe namens namens name ". /> <br> <Eingabe type = "surug" value = "speichern" /> < /form>
Es gibt ein ContactInfo -Attribut im Benutzerobjekt. Der Code in Controller steht im Einklang mit dem, was in Punkt 3 gesagt wird. In dem Formularcode müssen Sie jedoch "Attributname (Attribut des Objekttyps) verwenden.
5. Listenbindung:
Die Liste muss an das Objekt gebunden sein und nicht direkt in die Parameter der Controller -Methode geschrieben werden.
Modellcode:
public class user {private String firstname; private Zeichenfolge 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 Liste <Unters> Benutzer; public list <Unter> getUsers () {return user; } public void setUsers (List <Unter> Benutzer) {this.users = Benutzer; }} Controller -Code:
@RequestMapping ("Sayth.do") public void test (userListForm userForm) {für (Benutzer Benutzer: userForm.getUlers ()) {System.out.println (user.getFirstName () + " -" + user.getLastName ()); }}Formcode:
<form action="saysth.do" method="post"><table><thead><tr><th>First Name</th><th>Last Name</th></tr></thead><tfoot><tr><td colspan="2"><input type="submit" value="Save" /></td></tr></tfoot><tbody><td><td><input Name = "Benutzer [0]. name = "Benutzer [1] .LastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "user [2].
In der Tat ähnelt dies der Bindung der Contantinfo -Daten im Benutzerobjekt im 4. Punkt, aber die Eigenschaften im BenutzerListform -Objekt sind hier eher als Liste als als gewöhnliche benutzerdefinierte Objekte definiert. Daher müssen Sie den Einweis der Liste in der Formular angeben. Es ist erwähnenswert, dass Spring ein Listenobjekt mit dem maximalen Einweiswert als Größe erstellt. Wenn daher eine dynamische Zugabe und Löschung von Zeilen in der Form vorliegt, sollte besondere Aufmerksamkeit geschenkt werden. Nachdem eine Tabelle verwendet wurde, steht der Einweiswert nicht mit der tatsächlichen Größe nicht mit der tatsächlichen Größe überein, nachdem der Benutzer während der Verwendung Zeilen gelöscht und Zeilen mehrmals hinzugefügt wird. Zu diesem Zeitpunkt haben nur die Objekte in der Liste Werte in dem Formular mit Einweisen, ansonsten sind sie null. Siehe ein Beispiel:
Formcode:
<form action="saysth.do" method="post"><table><thead><tr><th>First Name</th><th>Last Name</th></tr></thead><tfoot><tr><td colspan="2"><input type="submit" value="Save" /></td></tr></tfoot><tbody><td><td><input Name = "Benutzer [0]. name = "Benutzer [1] .LastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "Benutzer [20] .Firstname" value = "eee"/> </td> <td> <input name = "user [20] .lastname" value = "fff"/> </> </> </> </> </> </> </> </> </> </thex> </> </> </> </thex> </> </thex> </the>
Zu diesem Zeitpunkt erhält userForm.getUsers () in Controller die Größe der Liste auf 21 und keiner dieser 21 Benutzerobjekte ist null, aber der ersteName und der Nachname in den Benutzerobjekten von 2 bis 19 sind null. Druckergebnis:
aaa - bbbccc - dddnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullnull - nullee - fff
6. Bindung einstellen:
Das SET ähnelt der Liste und muss auch an das Objekt gebunden sein und nicht direkt in die Parameter der Controller -Methode geschrieben werden. Wenn Bindungsdaten jedoch die entsprechenden Anzahl von Modellobjekten im Set -Objekt hinzugefügt werden, muss jedoch zuerst die entsprechende Anzahl von Modellobjekten hinzugefügt werden.
Modellcode:
public class user {private String firstname; private Zeichenfolge 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 <Unter> user> users = new HashSet <Benuche> (); public userSetform () {user.add (neuer user ()); users.Add (neuer user ()); users.Add (neuer user ()); } public set <Beus> getUsers () {return user; } public void setUsers (set <Bener> Benutzer) {this.users = user; }}Controller -Code:
@RequestMapping ("Sayth.do") public void test (userSetform userForm) {für (Benutzer Benutzer: userForm.getUlers ()) {System.out.println (user.getFirstName () + " -" + user.getLastName ()); }}Formcode:
<form action="saysth.do" method="post"><table><thead><tr><th>First Name</th><th>Last Name</th></tr></thead><tfoot><tr><td colspan="2"><input type="submit" value="Save" /></td></tr></tfoot><tbody><td><td><input Name = "Benutzer [0]. name = "Benutzer [1] .LastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "user [2].
Grundsätzlich ähnlich wie die Listenbindung.
Es ist zu beachten, dass, wenn der maximale Einweiswert größer ist als die Größe des Satzes, ein org.springframework.beans.invalidPropertyException geworfen wird. Daher ist es bei der Verwendung etwas unpraktisch.
7. Kartenbindung:
Die Karte ist die flexibelste. Es muss auch an das Objekt gebunden sein und kann nicht direkt in die Parameter der Controller -Methode geschrieben werden.
Modellcode:
public class user {private String firstname; private Zeichenfolge 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 usermapform {private map <string, user> user; public map <string, user> getUsers () {return user; } public void setUsers (MAP <String, Benutzer> Benutzer) {this.users = user; }} Controller -Code:
@RequestMapping ("Sayth.do") public void test (UsMapForm UserForm) {for (map.entry <String, Benutzer> Eintrag: userForm.getUsers (). Eintragset ()) {System.out.println () + + ":" + Eintrag.getValue (). Eintrag.GetValue (). getLastName ()); }} Formcode:
<form action="saysth.do" method="post"><table><thead><tr><th>First Name</th><th>Last Name</th></tr></thead><tfoot><tr><td colspan="2"><input type="submit" value="Save" /></td></tr></tfoot><tbody><td><td><input name = "user ['x']. FirstName" value = "aaa"/> </td> <td> <input name = "user ['x']. LastName" value = "bbb"/> </td> </tr> <tr> <td> <input name = "user ['y'. name = "user ['y']. LastName" value = "ddd"/> </td> </tr> <td> <td> <input name = "user ['z']. firstname" value = "eee"/> </td> <td> <input name = "user ['z'. /> </td> </tr> </tbody> </table> </form>
Druckergebnis:
X: AAA - BBBY: CCC - DDDZ: EEE - FFF
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.