Comment envoyer un tableau javascript à l’action struts en utilisant jQuery Ajax

Struts 2 est nouveau pour moi. Je souhaite envoyer un tableau javascript à une classe d’action Struts à l’aide de la requête jQuery AJAX.
L’alerte fonctionne bien, la execute() ne fonctionne pas.
Quand je mets System.out.println("language : "+ language); dans la méthode execute() , la sortie est

langue: null .

 var langArr = []; $("#language").each(function() { var selectedLang = $("select").val(); var selectedValues = $(this).val(); langArr.push(selectedValues); }); alert("Languages : " + langArr); $.ajax({ method: "POST", url: "getProjectPost", data: { "language" : langArr }, dataType : "json", traditional: true, success: function() { alert("Success"); }, error: function() { alert("Error"); } }); 

Ceci est ma classe d’action

 public class ProjectPostAction { private int[] language; public final int[] getLanguage() { return language; } public final void setLanguage(int[] language) { this.language = language; } public Ssortingng execute() throws Exception { System.out.println("language : "+ language[0]); return "success"; } 

Jquery sérialise les données envoyées en tant que parameters en utilisant $.param interne lors $.param une requête ajax avec $.ajax .

Les données doivent être définies sous la forme d’un tableau d’entiers ou d’une chaîne avec une liste d’entiers séparés par des virgules. JQuery peut donc les sérialiser correctement avant de les envoyer avec la demande.

Vous pouvez envoyer un paramètre de tableau à struts2 uniquement avec traditional paramètre traditional , car struts utilise la conversion de type pour renseigner une propriété de l’action à l’aide de clés en tant que noms de paramètre.

Ainsi, le tableau doit être un tableau d’entiers primitifs, mais votre tableau contient d’autres objects qui ne sont pas des entiers primitifs.

Pour montrer que vous pouvez voir cette démo, vous apprendrez comment obtenir des valeurs de parameters et les sérialiser de la même manière que pour $.ajax .

Struts2 peut également convertir une chaîne contenant des valeurs séparées par des virgules par conversion de type par défaut. Par exemple, vous pouvez voir comment les valeurs de liste de cases à cocher sont passées à l’action struts .

Pour utiliser JSON avec Struts2, la meilleure option consiste à importer le plug-in JSON Struts2 .

Ensuite,

  1. vous obtiendrez une conversion JSON automatique lors de l’exposition des données de l’action au JSP, en utilisant le résultat Json comme décrit ici , MAIS
  2. vous devez inclure l’ intercepteur Json dans votre stack d’intercepteurs pour que la conversion JSON du fichier JSP en action, telle que décrite ici et ici .