Регистрация: Jan 2010
Сообщений: 211
|
Ну да, это может показать и дебаггер, что ArrayCollection - это фактически массив в обертке. Правда, я не очень понял предвзятости к этому объекту, так как а) именно его выбрали для сериализации практически любого (!) списочного объекта Java (а их там ой как много!) и б) он реализует с помощью курсоров автоматическую сортировку, что немаловажно. Правда, слегонца бесит невозможность получить индекс объекта простой функцией, приходится перебирать ... это есть неправильно.
А что касается сериализации, то в получаемой коллекции объектов наблюдается порядочная вложенность (сервер извлекает данные в одну структуру из 2 десятков таблиц) и везде (!), где есть набор (коллекция ArrayCollection), там находится коллекция именно нужных типов объектов (на клиенте зеркальная структура POJO/BOJO(?) объектов), кроме "главной" коллекции.
Кстати, на сайте оффдоки есть таблицы сериализации/десериализации между Flex и Java (BlazeDS/LCDS) и все сделано в точности с ней, хотя и сложно ошибиться. А "не-ECMAScript" классы великолепно сериализуются, если на клиенте есть AS-класс с [RemoteClass(alias="myproject.myclass")]. Хотя большого опыта нет, но работает все как часики.
Еще пару слов о сериализации/десериализации с сервера на клиент: как-то писал, но решения не нашел, пришлось обходить. На Java есть тип boolean и класс Boolean. Первый имеет только 2 возможных значения: true и false, класс же может иметь и null-значение. У AS есть класс Boolean, в которое сериализируется и boolean, и Boolean (согласно таблицам в оффдоке). Но реально если на сервере было свойство объекта типа Boolean со значением null, то на клиенте мы все равно получим false, как будто передаем boolean, а не Boolean.
Последний раз редактировалось Dimitry_II; 19.06.2010 в 02:44.
|