2010-11-23 7 views
1

J'ai voulu créer une entretoise 2 avec le type de retour json en utilisant la configuration d'annotation. Ive a créé avec succès ce en utilisant la configuration de type XML comme cet extrait:Struts 2 json annotation

<action name="FetchJSON" class="com.stikiflem.Json" method="getJSON"> 
     <result type="json"/> 
</action> 

J'ai posté une démo de travail d'utiliser une configuration de type xml ici http://stikiflem.wordpress.com/2008/08/27/struts-2-json-sample/

Mais comment puis-je convertir en annotation? Voici ma classe exemple:

public class JsonAction extends ActionSupport{ 

private List sampleList; 

public String execute() { 

    sampleList = new ArrayList(); 

    sampleList.add("stikiflem sample 1"); 
    sampleList.add("stikiflem sample 2"); 
    sampleList.add("stikiflem sample 3"); 
    sampleList.add("stikiflem sample 4"); 

    System.out.println("----------------------------------------------"); 
    System.out.println("----------------------------------------------"); 
    System.out.println("-sample111List:" + sampleList.toString()); 
    System.out.println("----------------------------------------------"); 
    System.out.println("----------------------------------------------"); 

    return SUCCESS; 
} 


@Action(value="FetchJSON", results = { 
    @Result(name="success", type="json") 
}) 

public String getJSON(){ 
System.out.println("get jason ko"); 
return execute(); 
} 

public List getSampleList() { 
    return sampleList; 
} 

public void setSampleList(List sampleList) { 
    this.sampleList = sampleList; 
} 



} 

avons essayé d'appeler par « json.action », il déclenche la méthode d'exécution() bien sûr, mais ne peut pas retourner un type JSON. L'appeler par "FetchJSON" ne fait rien. Cette question semble stupide mais il y a juste une petite quantité de tutoriels et un exemple d'annotation détaillée dans le net. J'ai lu un Manning Struts 2 dans le livre d'action, mais il suffit de gratter la surface, juste le bonjour typique du monde et de réussir, la redirection d'entrée. J'ai cherché le net haut et bas et jusqu'ici, je n'en ai vu aucun. Je sais qu'il y a beaucoup de programmeurs à la recherche de cela aussi. J'espère que quelqu'un peut m'éclairer à propos de celui-ci. Je me suis cogné la tête dessus pendant des jours déjà. :(

Répondre

4

Une question similaire a été posée ici: Struts2 JSON Plugin With Annotations

Je suis votre action de travail en l'annotant comme suit:

@ParentPackage("json-default") 
@Result(name="success", type="json") 
public class JsonAction extends ActionSupport { 
1

Obtenez les dépendances JAR

<dependency> 
    <groupId>org.apache.struts</groupId> 
    <artifactId>struts2-convention-plugin</artifactId> 
    <version>2.3.20</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.struts</groupId> 
    <artifactId>struts2-json-plugin</artifactId> 
    <version>2.3.20</version> 
</dependency> 

Convention Plugin

Le plugin Convention est fourni avec Struts depuis la version 2.1 et remplace les plugins Codebehind Plugin et Zero Config. Il offre les fonctionnalités suivantes:

lieu d'action par les conventions de nommage des paquets

Résultat (JSP, FreeMarker, etc.) lieu par les conventions de nommage

Nom de la classe à la convention de nommage URL

Nom du package pour l'espace de noms convention

nom de l'action l'emporte sur l'aide des annotations

o Namespace verrides utilisant des annotations

package XWork remplace à l'aide des annotations

Set Parent Paquet

En utilisant l'annotation ensemble du package JSON par défaut pour soutenir le JSON.

@ParentPackage("json-default") 

Set Valeur Type

@Result(name="success", type="json") 

Définir le filtre dans web.xml

Définir les entretoises 2 filtre passe web.xml et la classe d'action en définissant actionPackages.

classe Action

Dans ces données de classe converties en format JSON.

@Result(name = "success", type = "json") 
    @ParentPackage("json-default") 
    public class StrutsJsonAnnotationAction extends ActionSupport { 

private static final long serialVersionUID = 3516335522937177571L; 
private String name = "Narendra Modi"; 
private String designation = "Prime Minister of India"; 
private String dob = "17 September 1950"; 
private String[] education = {"MA", "BA"}; 
private List<String> favBooks = new ArrayList<String>(); 
private Map<String, String> assumedOffice = new HashMap<String, String>(); 

public StrutsJsonAnnotationAction() { 

    favBooks.add("Ramayan"); 
    favBooks.add("Geeta"); 

    assumedOffice.put("President", "Pranab Mukherjee"); 
    assumedOffice.put("Preceded by", "Manmohan Singh"); 
} 

@org.apache.struts2.convention.annotation.Action("/india") 
@Override 
public String execute() { 
    return SUCCESS; 
} 

Source: http://www.websparrow.org/struts/struts2-and-json-integration-using-annotation-example