我正在使用GWT 2.1.1和使用AsyncService(而非RequestFactory)的客户端 - 服务器通信。我有一个返回“基金”对象的对象。该基金提到了一个“经销商”对象,该对象本身有一系列“基金”对象。
在一个场景中,我从服务器返回,资助“foo”,其经销商参考有“foo”,“bar”和“joe”资金。这是一种常见的业务场景。在客户端进行反序列化时,我收到错误,因为分发服务器中的资金集合中的“foo”引用最终没有填充值。特别是,不填充fund-id(字符串),这在哈希码实现中使用。在客户端反序列化期间,“bar”和“joe”资金被正确反序列化,但foo失败,即仅使用少数属性进行反序列化。
这里发生的是当“foo”被反序列化时,它有一些反序列化的属性,然后gwt尝试反序列化分发器。 Foo的fund-id财产尚未反序列化。因此,当分销商的资金集合被反序列化并且遇到“foo”时,反序列化器会返回对当前正在反序列化的“foo”的引用,该foo没有基金ID。因此,当GWT尝试将其添加到分发服务器中的Set(HashSet)时,哈希码实现将失败。
所以我的问题是,在这种情况下,有没有办法强制GWT首先序列化某些属性(在这种情况下是hashCode所依赖的fund-id)?
答案 0 :(得分:2)
发现这实际上是一个已知问题。对于遇到此问题的任何其他人,并通过搜索找到此问题:
http://code.google.com/p/google-web-toolkit/issues/detail?id=3577
我会在阅读之后发布有关如何实现自定义序列化程序的信息,以便人们有更全面的了解。我也邀请其他人这样做。