使用GWT中内置的RPC序列化/反序列化机制

AKF*_*KFA 5 gwt serialization gwt-rpc offline-caching deserialization

我正在使用HTML5 Local Storage开发GWT离线应用程序.我想使用com.google.gwt.storage.client.Storage(在2.3版中引入)来缓存/存储传输对象.但问题是,就目前而言(版本2.3),存储只能保存字符串值.

是否有可能从客户端代码中使用GWT内置的rpc序列化/解除机制?这样我就可以序列化传输对象并将它们存储在本地存储中,并在需要时检索它们并反序列化内容.

Tah*_*tar 1

GWT 文档有这样的说法:

本地存储是字符串存储

HTML5本地存储将数据以字符串形式保存为键值对。如果您希望保存的数据不是字符串数据,则您需要在使用 LocalStorage 时负责与字符串之间的转换。对于与 GWT RequestFactory 一起使用的代理类,您可以使用 RequestFactory#getSerializer() 进行字符串序列化。对于非代理对象,您可以使用 JSON 字符串化和解析。


编辑:

RequestFactory#getSerializer()返回 的实现ProxySerializer。但

ProxySerializer 序列化 EntityProxy 对象的图。ProxySerializer 在通过 RequestFactory.getSerializer(ProxyStore) 创建时与 ProxyStore 实例关联。

所以你不能用它来序列化任意对象。只有EntityProxy对象才能以这种方式序列化。GWT 文档没有提到任何对非EntityProxy对象执行此类序列化的方法,因此我认为可以安全地假设到目前为止还没有现成的解决方案可以执行此操作。对于非EntityProxy对象,GWT 文档(上面引用)建议使用 JSON 序列化。