GWT JsArray собственного, рекурсивного массива объектов - PullRequest
1 голос
/ 11 июня 2009

Я строю древовидную структуру, на которую объект ссылается так:

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


}

Моя проблема в том, что я не могу получить детей от объекта. Я проверил это и уверен, что передаваемая обратно структура JSON состоит из объекта, который содержит массив дочерних элементов этого типа, который может содержать дочерние элементы и т. Д.

... но при попытке получить доступ даже к самой простой информации о дочерних элементах, длине массива, он каждый раз возвращает 0. Я безуспешно пытался выяснить, что он делает не так, все остальные данные возвращаются нормально, но этот фрагмент НЕ будет возвращать потомков. Вот пример того, как я мог бы (напрямую) получить доступ к длине для тестирования:

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

ProjectListOL содержит массив ProjectObjectOL. В приведенном выше примере я просто взял тот, который, как я знаю, имеет детей. Я использую ColdFusion для бэкэнда, который возвращает объект JSON. Еще раз, я вывел этот объект несколько раз, как в GWT, так и за его пределами (непосредственно выгружая объект JSON из файла), проверяя, что объект действительно настроен так, как я ожидаю, что он будет установлен.

1 Ответ

1 голос
/ 11 июня 2009

Я пропустил очевидную ошибку:

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

OOPS:

public final native JsArray<ProjectObjectOL> getChildren() /*-{ **return** this.children; }-*/;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...