【发布时间】:2011-02-17 19:39:23
【问题描述】:
我正在使用 GWT 2.1.1 和使用 AsyncService(不是 RequestFactory)的客户端-服务器通信。我有一个返回“基金”对象的对象。该基金引用了一个“分发者”对象,该对象本身具有“基金”对象的集合。
在一种情况下,我从服务器返回基金“foo”,其分销商参考有“foo”、“bar”和“joe”基金。这是一个常见的业务场景。在客户端反序列化时,我收到一个错误,因为分发器中资金收集中的“foo”引用最终没有填充任何值。特别是,fund-id(字符串)没有填充,它用于哈希码实现。在客户端反序列化期间,“bar”和“joe”资金被正确反序列化,但 foo 失败,即仅使用几个属性进行反序列化。
这里发生的是,当“foo”被反序列化时,它有一些反序列化的属性,然后 gwt 尝试反序列化分发器。 Foo 的 fund-id 属性尚未反序列化。因此,当分发者的资金集合被反序列化并且遇到“foo”时,反序列化器会返回对当前正在反序列化的没有fund-id的“foo”的引用。所以当GWT试图将它添加到distributor中的Set(HashSet)时,hashcode实现失败。
所以我的问题是,在这种情况下,有没有办法强制 GWT 首先序列化某些属性(在这种情况下,hashCode 依赖的fund-id)?
【问题讨论】: