【问题标题】:Problems with indepth flex loading of value objects (Lazy loading at the front-end?)值对象的深度弹性加载问题(前端延迟加载?)
【发布时间】:2010-01-14 13:38:46
【问题描述】:

我正在使用带有 flex 前端的 java 后端。而且当我想使用标签函数时,它不会加载诸如值对象之类的深度属性,就像它在flex端被延迟加载一样,我确定它不是来自后端,因为我已经检查过了那边。

我在数据网格中也发现它不会一次加载所有值。

例如

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

}

Class Doe{
 var lastName:String;
}

我要求在后端获取所有 John's,后端给我所有包含 Doe's 的 John's。现在在 flex 端,当我收到该数据时,我会从 callresponder 触发结果事件。但是它仍然不能将 doe 加入到 Johns 中,john 的 doe 属性仍然为空。当我第二次问它时,它现在是关于母鹿的,所以它看起来像前端的延迟加载......

我做错了什么?

问候

【问题讨论】:

    标签: java apache-flex spring blazeds labelfunction


    【解决方案1】:

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

    使用 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

    一旦我完全理解了这一点,这种错误就会少得多。

    希望对你有帮助,

    -公斤

    【讨论】:

      【解决方案2】:

      好吧,我仍然不知道为什么会这样,但我已经通过使用平面 dto 解决了它,现在我正在使用完整的 MVC 架构......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-23
        • 2010-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-06
        • 1970-01-01
        • 2019-04-20
        相关资源
        最近更新 更多