Maison > Java > javaDidacticiel > Comment personnaliser la sérialisation du plug-in JSON Struts2 pour des objets spécifiques ?

Comment personnaliser la sérialisation du plug-in JSON Struts2 pour des objets spécifiques ?

Linda Hamilton
Libérer: 2024-12-14 03:37:14
original
220 Les gens l'ont consulté

How to Customize Struts2 JSON Plugin Serialization for Specific Objects?

Dépannage du plugin JSON Struts2

Fonctionnalité du plugin JSON Struts2

Le plugin JSON Struts2 fonctionne en sérialisant l'intégralité de l'action en JSON, à l'exclusion des propriétés transitoires et de celles sans getters.

Personnalisation de la sérialisation avec Root Objet

Pour sérialiser uniquement un objet spécifique, vous pouvez exploiter l'attribut "racine" dans struts.xml :

<result type="json">
    <param name="root">
        objectToBeSerialized
    </param>
</result>
Copier après la connexion

Solution pour un cas spécifique

Étant donné une structure de données avec plusieurs lignes représentées par "[col1, col2]", vous pouvez créer :

  • Un objet de valeur : MyRow avec des champs col1 et col2
  • Une classe Action avec une liste de MyRow appelée "lignes"
  • Mettez à jour le fichier Struts.xml pour définir la "racine" sur "lignes"

Exemple de mise en œuvre

Objet de valeur (MyRow.java) :

public class MyRow implements Serializable {
    private String col1;
    private String col2;

    // Getters and setters omitted for brevity
}
Copier après la connexion

Classe d'action (PartAction.java) :

public class PartAction implements Serializable {
    private List<MyRow> rows;

    public List<MyRow> getRows() { return rows; }

    public String finder() {
        rows = new ArrayList<>();
        // Loop through search results and populate rows
        return Action.SUCCESS;
    }
}
Copier après la connexion

Struts.xml :

<package name="default" namespace="/ajax" extends="json-default">
    <action name="finder" class="action.Part" method="finder">
        <result type="json">
            <param name="root">rows</param>
        </result>
    </action>
</package>
Copier après la connexion

Rappel AJAX Fonction :

var handledata = function(data) {
    $.each(data, function(index) {
        alert(data[index].col1);
        alert(data[index].col2);
    });
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal