Maison  >  Article  >  interface Web  >  Exemple de spirngmvc js transmettant des paramètres json complexes au contrôleur

Exemple de spirngmvc js transmettant des paramètres json complexes au contrôleur

亚连
亚连original
2018-05-28 15:02:391742parcourir

Ci-dessous, je vais partager avec vous un exemple de spirngmvc js transmettant des paramètres json complexes au contrôleur. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde.

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. L'enctype (encodage MIME) reçu par @RequestBody par défaut est application/json, il est donc obligatoire. lors de l'envoi d'une requête POST, définissez les informations d'en-tête de la requête, sinon Spring MVC ne les convertira pas automatiquement en données JSON, puis les analysera dans la collection correspondante lors de l'analyse des paramètres de la requête de collection.

Voici des exemples de paramètres de collection plus complexes qui reçoivent Listf7e83be87db5cd2d9a8a0b8117b38cd4, List4c8e0c17c3bd7e0081bb17cc795e1984, Lista06c5c2dfccfdea21bf0b155d9343663>, User[] et User (le bean contient List) :

Paramètres de la collection de liste de réceptionf7e83be87db5cd2d9a8a0b8117b38cd4 :

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){ 
  … 
 } 
});


2. Méthode du contrôleur :


@Controller 
@RequestMapping("/catalog.do") 
public class CatalogController { 
 
 @RequestMapping(params = "fn=deleteCatalogSchemes") 
 @ResponseBody 
 public AjaxJson deleteCatalogSchemes(@RequestParam("idList[]") List<String> idList,Boolean isBatch) { 
   … 
 } 
}


Liste de réceptiond6dfeb34506b9ae91949b619ea6d8b0b, Paramètres de collection Utilisateur[] :

1. :


public class User { 
  private String name; 
 private String pwd; 
 //省略getter/setter 
}


2. Code js de la page :


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){ 
  … 
 } 
});


3. Méthode du contrôleur :


@Controller 
@RequestMapping("/catalog.do") 
public class CatalogController { 
 
 @RequestMapping(params = "fn=saveUsers") 
 @ResponseBody 
 public AjaxJson saveUsers(@RequestBody List<User> userList) { 
  … 
 } 
}


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

Reçoit les paramètres de collection Lista06c5c2dfccfdea21bf0b155d9343663> :

1. :


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){ 
  … 
 } 
});


2. Méthode du contrôleur :


@Controller 
@RequestMapping("/catalog.do") 
public class CatalogController { 
 
 @RequestMapping(params = "fn=saveUsers") 
 @ResponseBody 
 public AjaxJson saveUsers(@RequestBody List<Map<String,Object>> listMap) { 
  … 
 } 
}


Paramètres de la collection Recevoir l'utilisateur (le bean contient une liste) :

1. Classe d'entité utilisateur :


public class User { 
 private String name; 
 private String pwd; 
 private List<User> customers;//属于用户的客户群 
 //省略getter/setter 
}


2. Code js de la page :


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){ 
  … 
 } 
});


3. :


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

Ce qui précède est ce que j'ai compilé pour vous. J'espère qu'il vous sera utile à l'avenir.

Articles associés :

Comment créer un objet ajax et être compatible avec plusieurs navigateurs

Requêtes Ajax imbriquées dans Ajax requêtes Exemple de code

Utilisez la technologie Ajax pour compléter la fonction de connexion à la page d'accueil via l'objet XMLHttpRequest

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!

Déclaration:
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