Maison > interface Web > js tutoriel > js implémente la transmission de paramètres json complexes au contrôleur

js implémente la transmission de paramètres json complexes au contrôleur

小云云
Libérer: 2018-03-30 09:39:48
original
1602 Les gens l'ont consulté

Lorsque Spring MVC reçoit les paramètres de demande de collecte, il doit ajouter @RequestBody avant les paramètres de collection de la méthode Controller. Le type d'enc (codage MIME) reçu par @RequestBody par défaut est application/json, le rapport de demande doit donc être. défini lors de l'envoi d'informations d'en-tête de requête POST, sinon Spring MVC ne les convertira pas automatiquement en données JSON, puis ne les analysera pas dans la collection correspondante lors de l'analyse des paramètres de la demande de collection.

Voici quelques collections relativement complexes qui reçoivent les paramètres List, List, List>, User[], User (bean contient List). exemple :

reçoit le paramètre de collection List :

1. Code js de la page :

var idList = new Array(); 
idList.push(“1”); 
idList.push(“2”); 
idList.push(“3”); 
var isBatch = false; 
$.ajax({ 
 type: "POST", 
 url: "<%=path%>/catalog.do?fn=deleteCatalogSchemes", 
 dataType: &#39;json&#39;, 
 data: {"idList":idList,"isBatch":isBatch}, 
 success: function(data){ 
  … 
 }, 
 error: function(res){ 
  … 
 } 
});
Copier après la connexion

2. >Receive List, Paramètres de collection User[] :

@Controller 
@RequestMapping("/catalog.do") 
public class CatalogController { 
 
 @RequestMapping(params = "fn=deleteCatalogSchemes") 
 @ResponseBody 
 public AjaxJson deleteCatalogSchemes(@RequestParam("idList[]") List<String> idList,Boolean isBatch) { 
   … 
 } 
}
Copier après la connexion
1. Classe d'entité utilisateur :

2. Code js de la page :

public class User { 
  private String name; 
 private String pwd; 
 //省略getter/setter 
}
Copier après la connexion

3. . Méthode du contrôleur :

var userList = new Array(); 
userList.push({name: "李四",pwd: "123"}); 
userList.push({name: "张三",pwd: "332"}); 
$.ajax({ 
 type: "POST", 
 url: "<%=path%>/catalog.do?fn=saveUsers", 
 data: JSON.stringify(userList),//将对象序列化成JSON字符串 
 dataType:"json", 
 contentType : &#39;application/json;charset=utf-8&#39;, //设置请求头信息 
 success: function(data){ 
  … 
 }, 
 error: function(res){ 
  … 
 } 
});
Copier après la connexion
Copier après la connexion

Si vous souhaitez recevoir le tableau User[], il vous suffit de modifier le type de paramètre de saveUsers en @RequestBody User[] userArray.

@Controller 
@RequestMapping("/catalog.do") 
public class CatalogController { 
 
 @RequestMapping(params = "fn=saveUsers") 
 @ResponseBody 
 public AjaxJson saveUsers(@RequestBody List<User> userList) { 
  … 
 } 
}
Copier après la connexion
Receive List> paramètres de collection :

1. Code js de la page (l'objet utilisateur n'est pas nécessaire) :

2. Méthode du contrôleur :

var userList = new Array(); 
userList.push({name: "李四",pwd: "123"}); 
userList.push({name: "张三",pwd: "332"}); 
$.ajax({ 
 type: "POST", 
 url: "<%=path%>/catalog.do?fn=saveUsers", 
 data: JSON.stringify(userList),//将对象序列化成JSON字符串 
 dataType:"json", 
 contentType : &#39;application/json;charset=utf-8&#39;, //设置请求头信息 
 success: function(data){ 
  … 
 }, 
 error: function(res){ 
  … 
 } 
});
Copier après la connexion
Copier après la connexion

Reçoit les paramètres de collection de l'utilisateur (le bean contient une liste) :

@Controller 
@RequestMapping("/catalog.do") 
public class CatalogController { 
 
 @RequestMapping(params = "fn=saveUsers") 
 @ResponseBody 
 public AjaxJson saveUsers(@RequestBody List<Map<String,Object>> listMap) { 
  … 
 } 
}
Copier après la connexion
1. Classe d'entité utilisateur :

2. 🎜>

public class User { 
 private String name; 
 private String pwd; 
 private List<User> customers;//属于用户的客户群 
 //省略getter/setter 
}
Copier après la connexion
3. Méthode du contrôleur :

var customerArray = new Array(); 
customerArray.push({name: "李四",pwd: "123"}); 
customerArray.push({name: "张三",pwd: "332"}); 
var user = {}; 
user.name = "李刚"; 
user.pwd = "888"; 
user. customers = customerArray; 
$.ajax({ 
 type: "POST", 
 url: "<%=path%>/catalog.do?fn=saveUsers", 
 data: JSON.stringify(user),//将对象序列化成JSON字符串 
 dataType:"json", 
 contentType : &#39;application/json;charset=utf-8&#39;, //设置请求头信息 
 success: function(data){ 
  … 
 }, 
 error: function(res){ 
  … 
 } 
});
Copier après la connexion
Recommandations associées :

@Controller 
@RequestMapping("/catalog.do") 
public class CatalogController { 
 
 @RequestMapping(params = "fn=saveUsers") 
 @ResponseBody 
 public AjaxJson saveUsers(@RequestBody User user) { 
  List<User> customers = user.getCustomers(); 
  … 
 } 
}
Copier après la connexion

ASP.NET pour obtenir le contrôleur, l'URL et l'action dans MVC détaillé explication de la méthode

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal