完全理解你的问题很棘手。但是,我在这些方面遇到了很多很多次的问题。所以我得到了一般问题。
使用 BlazeDS 要记住的一件事是,通过网络发送的类是序列化和反序列化的。简而言之,通过网络写入和读取的唯一内容是每个类的字段/属性。您必须密切注意 Java 端和 Flex 端的类中的基本数据类型。确保所有属性/字段和公共 getter/setter 匹配并确保它们清晰。
我所说的“清晰”的意思是,当 BlazeDS 无法确定将哪些变量粘贴在哪里时,它会感到困惑。
尽管您的 Doe 类不是字符串,但它只包含一个字符串。因此,当它通过网络发送时,它看起来就像一个字符串。在这种情况下,我看到 blazeds 感到困惑。它看到两个字符串来自网络,但它无法确定哪个字符串在哪里。对你来说,John 包含“Doe”和一个字符串,但最终 BlazeDS 真正看到的只是一个字符串和一个字符串。
只是为了测试,在您的基本示例中,将 Doe.lastName 更改为 Integer 或其他一些对象。很有可能,它会在另一端停止出现空值。如果它仍然为空,那么您的 ActionScript 和 Java 类 (John & Doe) 没有正确匹配,或者它们太模棱两可。
基本点是:当你收到数据时出现 null ,这意味着你有序列化问题。BlazeDS 无法弄清楚如何读取写入网络的内容。因此,要么调整您的字段、属性和公共 getter/setter ....,要么编写您自己的方法来序列化您的对象。
这个页面非常详细地描述了 blazeds 序列化(以及如何自己处理它):
http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=serialize_data_2.html
一旦我完全理解了这一点,这种错误就会少得多。
希望有帮助,
-公斤