Bonjour

J'ai un tableau que je récupère à partir d'un controleur spring boot:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[
[{"numDossier":"do001"}, {"nomArticle":"huile","quantiteEntree":88,"typeArticle":"vidange"}, {"nomArticle":"téléphone","quantiteEntree":27,"typeArticle":"samsung"}, {"numDossier":"do002"}, {"nomArticle":"chaussure","quantiteEntree":200,"typeArticle":"soulier"}]
]
Ce tableau veut dire que pour chaque dossier , j'ai des entrées d'article. Par exemple pour le dossier do001, j'ai 2 articles(huile et téléphone) et pour le dossier do002 j'ai un seul article (chaussure).

Quand j'essaie de récupérer ces données dans Ajax:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 success: function(response, textStatus, jqXHR){
 
	         var result = response;
 
	         $.each(result, function(i, obj) {	
	  console.log("Numéro dossier: "+obj.numDossier+"; Nom article: "+obj.nomArticle+"; Type Article: "+obj.typeArticle+"; Quantité entrée: "+obj.quantiteEntree);
});
elles s'affichent sous cette forme:

Numéro dossier: do001; Nom article: undefined; Type Article: undefined; Quantité entrée: undefined
Numéro dossier: undefined; Nom article: huile; Type Article: vidange; Quantité entrée: 88
Numéro dossier: undefined; Nom article: téléphone; Type Article: samsung; Quantité entrée: 27
Numéro dossier: do002; Nom article: undefined; Type Article: undefined; Quantité entrée: undefined
Numéro dossier: undefined; Nom article: chaussure; Type Article:soulier; Quantité entrée: 200
Or j'aimerai les avoir sous cette forme:

Numéro dossier: do001
Nom article: huile; Type Article: vidange; Quantité entrée: 88
Nom article: téléphone; Type Article: Samsung; Quantité entrée: 27
Numéro dossier: do002
Nom article: chaussure; Type Article: soulier; Quantité entrée: 200
j'ai déjà posé le problème dans la rubrique consacrée à Ajax, mais on m'a conseillé de traiter le problème coté serveur, mais je ne sais comment m'y prendre.

Voici le code qui me permet de regrouper les entrées par dossier:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@RequestMapping(value="/entrepot", method=RequestMethod.POST)
	public void getAllMagasinage(ModelMap model,@RequestParam(name = "numDossierRecherche") String numDossier, @RequestParam(name = "nomClientRecherche") String nomClient, HttpServletResponse response) throws ServletException, IOException {
 
		 response.setContentType("text/html;charset=UTF-8");
 
		List<Dossier> listeDossiers = null;
		List<Entree> listeEntrees = null;
 
				long  idClient = clientService.findIdClientByNomClient(nomClient);
				listeDossiers = dossierService.findDossierByIdClient(idClient);
 
 
			if (listeDossiers.isEmpty()) {
				response.getWriter().println("Aucun résultat trouvé!!!");
			} 
			else
			{
				List<JSONObject> entities = new ArrayList<JSONObject>();
 
			    for (Dossier d : listeDossiers) {
			    	JSONObject entity = new JSONObject();			    	
			    	entity.put("numDossier", d.getNumDossier());			    	
			    	entities.add(entity);
 
			    	listeEntrees = entreeService.findListEntreeByIdDossier(d.getIdDossier());
			    		for (Entree n : listeEntrees) {
			    			JSONObject entity2 = new JSONObject();
			    			entity2.put("nomArticle", n.getNomArticle());
			    			entity2.put("typeArticle", n.getTypeArticle());
			    			entity2.put("quantiteEntree", n.getQuantiteEntree());
			    			entities.add(entity2);			    			
			    		}			        
			    }
 
			   System.out.println(Arrays.toString(entities.toArray()));
 
			    response.getWriter().println(Arrays.toString(entities.toArray()));
			}
 
	}

Merci