Je suis en train de créer une application Web où les utilisateurs peuvent récupérer les tags de la base de données au format JSON,
voici l'action de mes jambes de force
public String execute(){
Gson gson = new Gson();
String tagsAsJson = gson.toJson(audioTaggingService.findTagsByName(q));
System.out.println(tagsAsJson);
return "success";
}
METTRE À JOUR:
La tagsAsJson
est déjà au format JSON, tout ce que je veux, c'est ne renvoyer que cela, et non le recours collectif dans son ensemble.
Il retourne quelque chose comme ça
Ce sont les données que je veux renvoyer à l'utilisateur
[{"id":2,"name":"Dubstep","description":"Dub wob wob"},{"id":3,"name":"BoysIIMen","description":"A 1990s Boy Band"},{"id":4,"name":"Sylenth1","description":"A VST Plugin for FLStudio "}]
Comment puis-je retourner la tagsAsJson
en tant que r JSON esponse? puisque cette réponse JSON sera utilisée par le code côté client.
Utilisez le Struts "JSON Plugin" .
Assez facile, trois étapes:
Il suffit de l'inclure dans votre projet Maven comme ceci
<dependency>
<groupId>org.Apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>${version.struts2}</version>
</dependency>
Déclarez le champ que vous souhaitez renvoyer sous forme de chaîne JSON comme le champ de votre action, indiquez le getter et le setter.
public class Struts2Action extends ActionSupport {
private String jsonString;
public String execute() {
Gson gson = new Gson();
jsonString = gson.toJson(audioTaggingService.findTagsByName(q));
return "success";
}
public String getJsonString() {
return jsonString;
}
public void setJsonString(String jsonString) {
this.jsonString = jsonString;
}
}
Et enfin, mettez ceci dans votre XML:
<action name="someJsonAction" class="com.something.Struts2Action">
<result type="json">
<param name="noCache">true</param>
<param name="excludeNullProperties">true</param>
<param name="root">jsonString</param>
</result>
</action>
Faites attention à <param name="root">jsonString</param>
. Ce fragment xml indique à Struts2 que cette propriété exacte doit être considérée comme une racine pour la sérialisation JSON. Ainsi, seule la propriété nommée (et au-dessous, si c'est une carte ou quoi que ce soit) sera renvoyée dans une réponse JSON.
Grâce au plugin JSON, le type de contenu sera correct.
La documentation "Plugin JSON" est ici: http://struts.Apache.org/release/2.3.x/docs/json-plugin.html
Essayez d'utiliser PrintWriter de la réponse.
Java
public String execute()
{
Gson gson = new Gson();
String jsonString = gson.toJson(audioTaggingService.findTagsByName(q));
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/json");
response.getWriter().write(jsonString );
return null;
}
Dans la classe Action, mettez ci-dessous le code.
public class Struts2Action extends ActionSupport
{
public String jsonString="";
public String execute()
{
Gson gson = new Gson();
jsonString = gson.toJson(audioTaggingService.findTagsByName(q));
System.out.println(jsonString);
return "success";
}
}
Dans JSP mis en dessous du code
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<title>Struts Rais</title>
<s:property value="jsonString"/><br />
Cela imprimera les données JSON si vous souhaitez manipuler des données JSON, cochez les données dans la balise var <s:set>
et accédez à la variable dans la page entière.
Pour renvoyer une réponse JSON, vous devez inclure le fichier struts2-json-plugin-2.xxjar dans le chemin de génération de votre projet. Vous devez définir le package extend = "json-default"json.
_ {le fichier struts2-json-plugin-2.x.x.jar vous permet de sérialiser l'attribut de la classe Action qui contient des paramètres dans un objet JSON.
Obtenez les dépendances de jar de maven
<dependencies>
<dependency>
<groupId>org.Apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>org.Apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>2.1.8</version>
</dependency>
Vous pouvez obtenir l'aide complète de ce lien ...