8
votes

Problème avec le plugin JSON dans Struts 2

J'ai le code suivant et je voudrais réaliser des fonctionnalités que / getjson retournera l'objet utilisateur comme JSON et / getjson2 retournera User2 en tant qu'objet JSON.

{"user2":{}}


1 commentaires

Je ne peux pas voir le problème. J'arrêterais à ce jour les configurateurs (je ne sais pas si vous avez une magie de printemps pouvant causer de l'étrangeté), déplacez la création de l'utilisateur dans une méthode de préparation et vérifiez que les utilisateurs ne sont pas nuls (voir strats.apache.org/2.0.14/docs/prepare-interceptor.html ) Et ceci est juste des préférences personnelles, mais @json (nom = "utilisateur") lorsqu'il est appliqué à GetUserer est redondant, donc je me débarrasserais des annotations @json sur les getters.


3 Réponses :


2
votes

Cette action fournit deux propriétés: utilisateur et utilisateur2.

Si la carte de getjson et / getjson22 sur cette classe d'action, ils répondront à la fois avec les propriétés disponibles: Utilisateur et User2.


0 commentaires

8
votes

Oui, c'est possible, la solution nécessite l'utilisation des paramètres incluant / exclure.

Suivant est un exemple.

Méthodes Getjson1 et Getjson2 Show includeparaMeters tandis que Getjson3 montre des exclutparamètres.

REMARQUE: Bien que l'exemple utilise des chaînes comme arguments pour inclure / exclure les paramètres, la chaîne est interprétée comme une expression régulière. Donc, je pourrais remplacer "string1, string2" sur Action3 avec "chaîne *".

Pour plus d'informations, voir: https://cwiki.apache.org/confluence/display/ww/json%20plugin xxx

... / getjson1 retour {"string1": "Un"}

... / getjson2 retourne {"string2": "Deux"}

... / getjson3 retourne {"Autre": "Autre"}


1 commentaires

Bonjour, j'ai modifié le code en fonction de votre exemple, mais je reçois maintenant une chaîne JSON vide, veuillez vous reporter à la mise à jour. Merci en avance.



4
votes

Vous devez inclure toutes les propriétés que vous souhaitez sérialiser. Cela inclut les propriétés de la classe d'utilisateurs comme celle-ci, par exemple: xxx pré>

mais, une autre forme pour obtenir ce travail pourrait utiliser des expressions régulières: P>

@Action(value="/getJson", results = {
        @Result(name="success", type="json",params = {
                "includeProperties",
                "user\..*"})})


0 commentaires