当前位置 : 主页 > 大数据 > 区块链 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-22
我正在使用 HTML5 Local Storage开发GWT离线应用程序.我想使用com.google.gwt.storage.client.Storage(在2.3版中引入)来缓存/存储传输对象.但问题是,就目前而言(版本2.3),存储只能保存字符串值. 是否有
我正在使用 HTML5 Local Storage开发GWT离线应用程序.我想使用com.google.gwt.storage.client.Storage(在2.3版中引入)来缓存/存储传输对象.但问题是,就目前而言(版本2.3),存储只能保存字符串值.

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

GWT Docs有这个说:

Local Storage is String Storage

HTML5 local storage saves data in
string form as key-value pairs. If the data you wish to save is not
string data, you are responsible for conversion to and from string
when using LocalStorage. For proxy classes used with the GWT
RequestFactory, you can use RequestFactory#getSerializer() to do
string serializing. For non-proxy objects, you could use JSON
stringify and parse.

编辑:

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

ProxySerializer Serializes graphs of EntityProxy objects. A
ProxySerializer is associated with an instance of a ProxyStore when it
is created via RequestFactory.getSerializer(ProxyStore).

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

网友评论