BlazeDS - Преобразование из ArrayList <BaseClass>на стороне Java в ActionScript - PullRequest
2 голосов
/ 16 марта 2010

Итак, у нас есть класс Java с двумя универсальными списками ArrayList. Похоже,

public class Blah
{
   public ArrayList<ConcreteClass> a;
   public ArrayList<BaseClass> b;
}

Используя [ArrayElementType ('ConcreteClass')] в классе actionscript, мы можем получить все преобразованные "a" штрафа. Однако с "b", поскольку фактический класс, встречающийся в строке, представляет собой гетерогенное сочетание классов, таких как BaseClassImplementation1, BaseClassImplementation2 и т. Д., Он печатается как объект. Есть ли способ преобразовать его в конкретный конкретный класс, предполагая, что на стороне клиента существует строго типизированная версия AS класса java

спасибо за вашу помощь! Regis

1 Ответ

2 голосов
/ 16 марта 2010

Чтобы гарантировать, что все ваши классы DTO маршалируются в AS и Java, вам нужно определить каждый удаленный класс как «удаленный класс» в AS, используя атрибут «RemoteClass», указывающий на определение класса java, например, это [RemoteClass (псевдоним = "com.myco.class")].

BlazeDS выполнит интроспекцию класса, когда он сериализуется / десериализуется, и соответствующим образом преобразует его (см. Документ ниже). Неважно, как классы упакованы или вложены в массив, до тех пор, пока он может быть подвергнут внутреннему анализу, он должен работать.

Если вам нужна специальная сериализация для класса, вы можете создать свои собственные прокси сериализации (называемые beanproxy), расширив «AbastractProxy» и загрузив их в блэйды, используя метод реестра PropertyProxyRegistry при запуске.

Большую часть этого вы найдете в руководстве разработчика Blaze http://livedocs.adobe.com/blazeds/1/blazeds_devguide/.

Создание собственного класса beanproxy смотрите здесь: //livedocs.adobe.com/blazeds/1/javadoc/flex/messaging/io/BeanProxy.html

...