2009-06-11 5 views
1

Je construis une structure arborescente qui une des références de l'objet lui-même dans comme ceci:GWT JsArray de soi, tableau d'objets récursif

public class ProjectObjectOL extends JavaScriptObject { 

    protected ProjectObjectOL() { } 


    public final native boolean getStatus() /*-{ return this.status; }-*/; 
    public final native String getError() /*-{ return this.error_message; }-*/; 

    public final native JsArray<ProjectObjectOL> getChildren() /*-{ this.children; }-*/; 


} 

Mon problème est que je ne peux pas sembler obtenir les enfants de l'objet. Je l'ai testé, et je suis sûr que la structure JSON renvoyée est constituée d'un objet qui contient un tableau d'enfants de ce type pouvant contenir des enfants, etc.

... mais en essayant de accéder même aux informations les plus simples sur les enfants, la longueur du tableau, il renvoie 0 à chaque fois. J'ai essayé sans succès de comprendre ce qui ne va pas, toutes les autres données sont correctes, mais cette seule pièce ne récupérera PAS les enfants. Voici un exemple de la façon dont je pourrais (directement) accéder à la longueur pour les tests:

JSONObject oResults = (JSONObject) JSONParser.parse(response.getText()); 
        ProjectListOL testoutputOL = oResults.isObject().getJavaScriptObject().cast(); 
        ProjectObjectOL testObject = testoutputOL.getProjectList().get(1); 
        Window.alert(testObject.getChildren().length()+""); 

A ProjectListOL contient un tableau de ProjectObjectOLs. Dans l'exemple ci-dessus, j'ai simplement saisi celui que JE SAVOIR a des enfants. J'utilise ColdFusion pour le backend qui retourne l'objet JSON. Encore une fois, j'ai sorti cet objet plusieurs fois, à la fois dans GWT et à l'extérieur (en vidant directement l'objet JSON du fichier) en vérifiant que l'objet est bien configuré comme je le souhaite.

Répondre

1

I Missed une erreur évidente:

public final native JsArray<ProjectObjectOL> getChildren() /*-{ this.children; }-*/; 

OOPS:

public final native JsArray<ProjectObjectOL> getChildren() /*-{ **return** this.children; }-*/; 
+0

lol - les dangers des langues dynamiquement tapées! – Chii