深入了解值对象的弹性加载问题(前端的延迟加载?)

时间:2010-01-14 13:38:47

标签: java flex spring blazeds labelfunction

我正在使用带有flex前端的java-backend。当我想使用labelfunction它不加载诸如值对象之类的indepth属性时,就像它在flex端加载延迟,我确定它不会从后端传入,因为我已经检查了它overthere。

我在datagrid中也得到了它,它不会立即加载所有值。

例如

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

}

Class Doe{
 var lastName:String;
}

我问我的后端得到所有John的,后端给了我所有John的包含Doe的。现在在flex端,当我收到数据时,我从callresponder中触发结果事件。但它仍然无法进入约翰的母鹿,约翰的母鹿属性仍然是空的。当我第二次问到这个母鹿的时候,所以它看起来像前端的延迟装载......

我做错了什么?

迎接

2 个答案:

答案 0 :(得分:1)

完全理解你的问题很棘手。但是,我在这些方面遇到过很多次问题。所以我得到了一般问题。

BlazeDS要记住的一件事是通过网络发送的类被序列化和反序列化。简而言之,通过网络编写和读取的唯一内容是每个类的字段/属性。您必须在Java端和Flex端关注类中的基本数据类型。确保所有属性/字段和公共getter / setter匹配,并确保它们清晰。

我的意思是“明确”是,当BlazeDS无法确定哪些变量要贴在哪里时会感到困惑。

虽然您的Doe类不是String,但它只包含一个字符串。因此,当它通过网络发送时,它看起来就像一个字符串。在这样的情况下,我看到blazeds感到困惑。它看到两个字符串来自网络,它无法弄清楚哪个去哪里。对你而言,John包含“Doe”和一个String,但所有BlazeDS最终都看到了一个String和一个String。

在您的基本示例中,仅测试将Doe.lastName更改为Integer或其他对象。机会是,它会在另一端停止出现。如果它仍然为null,那么您的ActionScript和Java类(John& Doe)不匹配或者它们太模糊。

基本点是:当您收到数据时出现空值时,表示您遇到序列化问题。 BlazeDS无法弄清楚如何读取写入网络的内容。因此,要么调整字段,属性和公共getter / setter ....要么编写自己的方法来序列化对象。

此页面详细介绍了blazeds序列化(以及如何自行处理):

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

一旦我完全理解了这一点,我就会有更少的错误。

希望有所帮助,

-kg

答案 1 :(得分:0)

好吧我还是不知道为什么会这样做,但我已经通过使用flat dto来解决它,现在我正在使用一个完整的MVC架构......