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
Linda Hamiltonoriginal
2024-12-14 03:37:14220parcourir

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>

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
}

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;
    }
}

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>

Rappel AJAX Fonction :

var handledata = function(data) {
    $.each(data, function(index) {
        alert(data[index].col1);
        alert(data[index].col2);
    });
}

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!

Déclaration:
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