Проблемы с глубокой гибкой загрузкой объектов-значений (Ленивая загрузка во внешнем интерфейсе?) - PullRequest
1 голос
/ 14 января 2010

Я использую Java-бэкэнд с гибким внешним интерфейсом. И когда я хочу использовать функцию label, она не загружает свойства Indepth, такие как объект значения, как будто она загружается лениво на стороне flex, я уверен, что она не приходит с бэкэнда, потому что я проверила overthere.

У меня есть также в датагриде, что он не загружает все значения одновременно.

например

Class John{
 var name:String;
var lastName:Doe;

}

Class Doe{
 var lastName:String;
}

Я спрашиваю у моего бэк-энда все Джона, а бэкэнд дает мне все Джона, в котором находятся Доу. Теперь на гибкой стороне я запускаю событие результата из автоответчика, когда получаю эти данные. Но, тем не менее, он не может получить доступ к лани в Johns, свойство лани для John все еще нулевое. Когда я спрашиваю об этом во второй раз, теперь речь идет о лани, так что это выглядит как ленивая загрузка в переднем конце ...

Что я делаю не так?

Greets

Ответы [ 2 ]

1 голос
/ 05 февраля 2010

Сложно полностью понять ваш вопрос. Однако у меня были проблемы в этом направлении, много-много раз. Итак, я понял общую проблему.

При работе с BlazeDS следует помнить, что классы, отправляемые по сети, сериализуются и десериализуются. Это означает, что в упрощенном виде единственное, что пишется и читается по сети, - это поля / свойства каждого класса. Вы должны обратить ЗАКРЫТО внимание на основные типы данных в ваших классах как на стороне Java, так и на стороне Flex. Убедитесь, что все свойства / поля и общедоступные методы получения / установки совпадают, и убедитесь, что они свободны.

Что я имею в виду под «очисткой», так это то, что BlazeDS запутывается, когда не может выяснить, какие переменные где и где придерживаться.

Хотя ваш класс Doe не является строкой, он содержит только строку. Таким образом, когда он отправляется по сети, он выглядит как строка. В таких случаях я видел, как лезли в замешательство. Он видит две строки, приходящие по сети, и не может понять, куда и куда. Для вас Джон содержит «Доу» и строку, но все, что BlazeDS действительно видит, в конце концов, это строка и строка.

Просто для проверки, в вашем базовом примере измените Doe.lastName на Integer или какой-либо другой объект. Скорее всего, он перестанет обнуляться на другом конце. Если он по-прежнему равен нулю, значит, ваши классы ActionScript и Java (John & Doe) не совпадают должным образом или слишком неоднозначны.

Суть в том, что когда вы получаете данные, когда все обнуляется, это означает, что у вас есть проблема с сериализацией. BlazeDS не может понять, как читать то, что было написано в сети. Так что либо настройте свои поля, свойства и общедоступные методы получения / установки .... или напишите свой собственный метод для сериализации ваших объектов.

Эта страница описывает сериализацию Blazeds (а также, как обрабатывать ее самостоятельно) в БОЛЬШИХ деталях:

http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=serialize_data_2.html

Как только я полностью понял это, у меня было намного меньше ошибок такого рода.

Надеюсь, это поможет,

-kg

0 голосов
/ 15 января 2010

Хорошо, я все еще не знаю, почему он это сделал, но я решил это с помощью flat dto's, теперь я использую полную архитектуру MVC ...

...