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

时间:2011-07-29 12:40:20

标签: gwt serialization deserialization gwt-rpc offline-caching

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

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

1 个答案:

答案 0 :(得分:1)

GWT Docs有这样的说法:

  

本地存储是字符串存储

     

HTML5本地存储保存数据   字符串形式作为键值对。如果您要保存的数据不是   字符串数据,您负责转换为字符串和从字符串转换   使用LocalStorage时。对于与GWT一起使用的代理类   RequestFactory,你可以使用RequestFactory#getSerializer()来做   字符串序列化。对于非代理对象,您可以使用JSON   stringify and parse。


修改

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

  

ProxySerializer序列化EntityProxy对象的图形。一个   ProxySerializer与ProxyStore的实例相关联   是通过RequestFactory.getSerializer(ProxyStore)创建的。

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