Maison >Java >javaDidacticiel >Comment le plugin JSON Struts2 sérialise-t-il les structures de données pour les appels AJAX ?

Comment le plugin JSON Struts2 sérialise-t-il les structures de données pour les appels AJAX ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 10:21:16593parcourir

How Does the Struts2 JSON Plugin Serialize Data Structures for AJAX Calls?

Plugin Struts2-JSON : Comprendre ses fonctionnalités

Le plug-in Struts2 JSON a une façon unique de fonctionner. Il gère la sérialisation des actions en JSON, mais uniquement pour certains éléments :

  • Propriétés non transitoires
  • Propriétés avec getters

Si vous préférez sérialiser uniquement des objets spécifiques, le plugin apporte une solution : l'attribut "root". Cet attribut vous permet de spécifier l'objet racine à sérialiser à l'aide d'une expression OGNL.

<result type="json">
    <param name="root">
        objectToBeSerialized
    </param>
</result>

La classe Action doit contenir les éléments suivants :

private CustomObject objectToBeSerialized;

public CustomObject getObjectToBeSerialized() {
    return this.objectToBeSerialized;
}

CustomObject peut représenter différents types de données, tels que des primitives, des chaînes, des tableaux, etc.

En utilisant cette méthode, vous pouvez renvoyer SUCCÈS et ERREUR comme l'AJAX habituel Actions Struts2 sans compromettre les conventions-cadres. De plus, vous pouvez accéder à l'objet JSON sérialisé directement à partir de la fonction de rappel de l'appel AJAX jQuery.

Adressage de votre scénario

En supposant que votre structure de données suit le modèle :

row1 [col1, col2], 
row2 [col1, col2], 
rowN [col1, col2]

Vous pouvez employer les personnes suivantes approche :

1. Créez une liste d'objets personnalisés

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

    // Getters
}

2. Modifiez la classe d'action

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

    // Getter
    public  List<MyRow> getRows() { 
        return this.rows; 
    } 

    public String finder() {
        rows = new ArrayList<MyRow>();

        // Populate the list with data
    }
} 

3. Ajustez Struts.xml

<result type="json" >
    <param name="root">
        rows
    </param>
</result>

4. Fonction de rappel AJAX

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

Cette approche vous permet de sérialiser la structure de données souhaitée, la rendant accessible dans votre fonction de rappel AJAX.

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