自定义对象的 BlazeDS 和 ArrayList

Kev*_*vMo 5 java apache-flex blazeds actionscript-3

我正在使用 BlazeDS 将 Flex 与 Java 连接起来。我在将自定义对象的 ArrayLists 从 Flex 传递到 java 时遇到问题。

我有两个对象,一个叫做Category,另一个叫做Section。一个类别有一个 Section 对象的 ArrayList。我可以在 Flex 和 Java 之间来回发送 Category 对象的 ArrayList,问题是当我尝试访问已从 Flex 返回到 Java 的 Category 对象的部分 ArrayList 时,出现以下错误:

flex.messaging.MessageException: java.lang.ClassCastException : flex.messaging.io.amf.ASObject
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我得到了一个 ASObjects 的 ArrayList 而不是我的 Section 对象。我尝试查找如何在 actionscript 中明确键入数组,但我唯一能找到的是使用 Vector 对象,而 BlazeDS 不支持该对象。是否可以在 Category 对象的 ArrayList 中传递 Section 对象的 ArrayList,或者我是否必须找到另一种方法?

Kev*_*vMo 4

Flex 实际上发送回了一个 flex.messaging.io.ArrayCollection 对象。下面是将其转换为我的 java 类的 ArrayList 的代码:

public ArrayList<MyObject> convertArrayCollection(ArrayCollection array){
        ArrayList<MyObject> myObjectArray = new ArrayList();
        ASTranslator ast = new ASTranslator();
        MyObject myObject;
        ASObject aso;

        for (int i=0;i< array.size(); i++){
            myObject = new MyObject();
            aso = new ASObject();

            aso = (ASObject) array.get(i);
            aso.setType("com.myPackage.MyObject");
            myObject = (MyObject) ast.convert(aso, MyObject.class);
            myObjectArray.add(myObject);
        }
        return myObjectArray;
    }
Run Code Online (Sandbox Code Playgroud)