Diverses méthodes de liaison des paramètres de Springmvc
1. Type de données de base (en prenant INT comme exemple, d'autres sont similaires):
Code du contrôleur:
@RequestMapping ("Sayth.do") Public Void Test (int count) {}Code de formulaire:
<form action = "sayth.do" metheth = "post"> <input name = "count" value = "10" type = "text" />......</ form>
Si la valeur du nom de l'entrée dans le formulaire est cohérente avec le nom de la variable de paramètre du contrôleur, la liaison des données peut être terminée. S'il est incohérent, vous pouvez utiliser l'annotation @RequestParam. Il convient de noter que si le type de données de base est défini dans le paramètre de la méthode du contrôleur, mais que les données soumises à partir de la page sont nuls ou "", des exceptions de conversion de données se produiront. C'est-à-dire qu'il est nécessaire de s'assurer que les données transmises par le formulaire ne peuvent pas être nulles ou "", donc, pendant le processus de développement, il est préférable de définir le type de données des paramètres comme un type d'emballage pour les données qui peuvent être vides, consultez l'exemple suivant.
2. Type d'emballage (en prenant un entier comme exemple, d'autres sont similaires):
Code du contrôleur:
@RequestMapping ("Sayth.do") Public Void Test (Nombre entier) {}Code de formulaire:
<form action = "sayth.do" metheth = "post"> <input name = "count" value = "10" type = "text" />......</ form>
Il est essentiellement le même que le type de données de base. La différence est que les données transmises par le formulaire peuvent être nulles ou "". Le code ci-dessus est par exemple. Si Num dans le formulaire est "" ou il n'y a pas d'entrée de Num dans le formulaire, alors la valeur NUM dans le paramètre de la méthode du contrôleur est nul.
3. Type d'objet personnalisé:
Code du modèle:
classe publique User {private String FirstName; String privé 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; }}Code du contrôleur:
@RequestMapping ("Sayth.do") Public void Test (utilisateur utilisateur) {}Code de formulaire:
<form action = "sayth.do" metheth = "post"> <input name = "firstName" value = "zhang" type = "text" /> <input name = "lastName" value = "trois" type = "text" />......</ form>
C'est très simple, faites simplement correspondre le nom de la propriété de l'objet et la valeur du nom de l'entrée un par un.
4. Personnaliser le type d'objet composé:
Code du modèle:
classe publique ContactInfo {private String Tel; adresse de chaîne privée; public String gettel () {return tel; } public void Settel (String tel) {this.tel = tel; } public String getAddress () {return adresse; } public void setAddress (adresse de chaîne) {this.address = adresse; }} public class user {private String FirstName; String privé LastName; ContactInfo privé 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 getContacInfo () {return ContactInfo; } public void setContacInfo (ContactInfo ContactInfo) {this.ContacInfo = ContactInfo; }} Code du contrôleur:
@RequestMapping ("sayth.do") public void test (utilisateur utilisateur) {System.out.println (user.getFirstName ()); System.out.println (user.getLastName ()); System.out.println (user.getContacInfo (). Gettel ()); System.out.println (user.getContacInfo (). GetAddress ());} Code de formulaire:
<form action = "sayth.do" metheth = "post"> <entrée name = "firstname" value = "zhang" /> <br> <entrée name = "lastname" value = "trois" /> <br> <entrée name = "ContactInfo.tel" Value = "13809908909" /> <br> <entrée name = "ContactInfo.Address" Value = "beijing" /> <br> <input type = "soumi" value = "enregistrer" /> </ form>
Il y a un attribut ContactInfo dans l'objet utilisateur. Le code du contrôleur est cohérent avec ce qui est dit au point 3. Cependant, dans le code de formulaire, vous devez utiliser "Nom d'attribut (attribut du type d'objet). Attribute Nom" pour nommer le nom d'entrée.
5. Liste de liaison:
La liste doit être liée à l'objet et ne peut pas être écrite directement dans les paramètres de la méthode du contrôleur.
Code du modèle:
classe publique User {private String FirstName; String privé 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 <utilisateur> utilisateurs; public list <ser utilisateur> getUsers () {return utilisateurs; } public void SetUsers (list <utilisateur> utilisateurs) {this.users = utilisateurs; }} Code du contrôleur:
@RequestMapping ("sayth.do") public void test (userListForm userForm) {for (utilisateur utilisateur: userForm.getUsers ()) {System.out.println (user.getFirstName () + "-" + user.getLastName ()); }}Code de formulaire:
<form action = "Sayth.do" Method = "Post"> <s tablel> <thead> <tr> <th> prénom </ th> <th> nom de famille </ th> </tr> </thead> <tfoot> <tr> <td Colspan = "2"> <entrée = "soumettre" value = "SAVE" /> </ td> </tr> </tfoot> name = "utilisateurs [0] .FirstName" value = "aaa" /> </td> <td> <entrée name = "utilisateurs [0] .lastName" value = "bbb" /> </td> </ tr> <tr> <td> <entrée name = "utilisateurs [1]. name = "utilisateurs [1] .lastName" value = "ddd" /> </td> </tr> <td> <td> <entrée name = "Users [2] .FirstName" value = "EEE" /> </td> <td> <entrée name = "Users [2] .lastName" Value = "FFF" /> </ TD>
En fait, cela est quelque peu similaire à la liaison des données CONTANTINFO dans l'objet utilisateur au 4ème point, mais les propriétés de l'objet UserListForm ici sont définies comme une liste, plutôt que des objets personnalisés ordinaires. Par conséquent, vous devez spécifier l'indice de liste dans le formulaire. Il convient de mentionner que le printemps créera un objet de liste avec la valeur des indices maximale en tant que taille. Par conséquent, s'il y a un ajout dynamique et une suppression des lignes sous la forme, une attention particulière doit être accordée. Par exemple, une fois un tableau utilisé, la valeur des indices sera incompatible avec la taille réelle après que l'utilisateur supprime les lignes et ajoute des lignes plusieurs fois pendant l'utilisation. À l'heure actuelle, seuls les objets de la liste auront des valeurs sous la forme qui ont des indices, sinon ce sera null. Voir un exemple:
Code de formulaire:
<form action = "Sayth.do" Method = "Post"> <s tablel> <thead> <tr> <th> prénom </ th> <th> nom de famille </ th> </tr> </thead> <tfoot> <tr> <td Colspan = "2"> <entrée = "soumettre" value = "SAVE" /> </ td> </tr> </tfoot> name = "utilisateurs [0] .FirstName" value = "aaa" /> </td> <td> <entrée name = "utilisateurs [0] .lastName" value = "bbb" /> </td> </ tr> <tr> <td> <entrée name = "utilisateurs [1]. name = "utilisateurs [1] .lastName" value = "ddd" /> </td> </tr> <td> <td> <entrée name = "utilisateurs [20].
À l'heure actuelle, UserForm.GetUsers () dans Controller obtient la taille de la liste à 21, et aucun de ces 21 objets utilisateur n'est nulle, mais le nom et le nom de LastNon dans les objets utilisateur de 2 à 19 sont nuls. Résultat d'impression:
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 - nullnull - nullnull - nullnull - nullnull - nullnull - nullee - fff
6. Définir la reliure:
Le jeu est similaire à la liste, et il doit également être lié à l'objet et ne peut pas être écrit directement dans les paramètres de la méthode du contrôleur. Cependant, lors de la liaison des données définies, le nombre correspondant d'objets de modèle doit être ajouté en premier dans l'objet SET.
Code du modèle:
classe publique User {private String FirstName; String privé 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; }} classe publique UsersetForm {private Set <User> users = new HashSet <ser user> (); public UserseTorm () {Users.Add (New User ()); users.add (nouvel utilisateur ()); users.add (nouvel utilisateur ()); } public set <User> getUsers () {return utilisateurs; } public void SetUsers (set <User> utilisateurs) {this.users = utilisateurs; }}Code du contrôleur:
@RequestMapping ("sayth.do") public void test (usetetform userForm) {for (utilisateur utilisateur: userForm.getUsers ()) {System.out.println (user.getFirstName () + "-" + user.getLastName ()); }}Code de formulaire:
<form action = "Sayth.do" Method = "Post"> <s tablel> <thead> <tr> <th> prénom </ th> <th> nom de famille </ th> </tr> </thead> <tfoot> <tr> <td Colspan = "2"> <entrée = "soumettre" value = "SAVE" /> </ td> </tr> </tfoot> name = "utilisateurs [0] .FirstName" value = "aaa" /> </td> <td> <entrée name = "utilisateurs [0] .lastName" value = "bbb" /> </td> </ tr> <tr> <td> <entrée name = "utilisateurs [1]. name = "utilisateurs [1] .lastName" value = "ddd" /> </td> </tr> <td> <td> <entrée name = "Users [2] .FirstName" value = "EEE" /> </td> <td> <entrée name = "Users [2] .lastName" Value = "FFF" /> </ TD>
Fondamentalement similaire à la liaison de la liste.
Il convient de noter que si la valeur des indices maximale est supérieure à la taille de l'ensemble, un org.springframework.beans.invalidpropertyException sera lancé. Par conséquent, c'est un peu gênant lors de l'utilisation.
7. LIGNAGE DE MAP:
La carte est la plus flexible. Il doit également être lié à l'objet et ne peut pas être écrit directement dans les paramètres de la méthode du contrôleur.
Code du modèle:
classe publique User {private String FirstName; String privé 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, utilisateur> utilisateurs; MAP PUBLIC <String, utilisateur> getUsers () {return utilisateurs; } public void SetUsers (map <string, utilisateur> utilisateurs) {this.users = utilisateurs; }} Code du contrôleur:
@RequestMapping ("Sayth.do") public void test (userMapForm userForm) {for (map.entry <string, user> entrée: userForm.getUser (). EntrySet ()) {System.out.println (entrée.getKey () + ":" + entrée.getValue (). GetFirstname () + "-" + entrée }} Code de formulaire:
<form action = "Sayth.do" Method = "Post"> <s tablel> <thead> <tr> <th> prénom </ th> <th> nom de famille </ th> </tr> </thead> <tfoot> <tr> <td Colspan = "2"> <entrée = "soumettre" value = "SAVE" /> </ td> </tr> </tfoot> name = "utilisateurs ['x']. FirstName" value = "aaa" /> </td> <td> <entrée name = "utilisateurs ['x']. LastName" value = "bbb" /> </td> </tr> <tr> <td> <entrée name = "Users ['y']. name = "utilisateurs ['y']. lastname" value = "ddd" /> </td> </tr> <td> <td> <entrée name = "utilisateurs ['z']. FirstName" value = "eee" /> </td> <td> <entrée name = "utilisateurs ['z']. /> </td> </tr> </ tbody> </ table> </ form>
Résultat d'impression:
X: AAA - BBBY: CCC - DDDZ: EEE - FFF
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.