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

5
我正在使用HTML5本地存储开发GWT离线应用程序。我想使用com.google.gwt.storage.client.Storage(在版本2.3中引入)缓存/存储传输对象。但问题是,目前(版本2.3),Storage只能保存字符串值。
是否有可能从客户端代码中使用GWT内置的rpc序列化/反序列化机制?这样我就可以序列化传输对象并将它们存储在本地存储中,在需要时检索并反序列化内容。
1个回答

1

GWT文档中提到:

本地存储是字符串存储

HTML5本地存储以键值对的形式保存数据,但实际上是以字符串形式保存。如果要保存的数据不是字符串类型,使用LocalStorage时需要负责进行转换。对于与GWT RequestFactory一起使用的代理类,可以使用RequestFactory#getSerializer()进行字符串序列化。对于非代理对象,可以使用JSON.stringify和parse。


编辑:

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

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

因此,您不能使用它来序列化任意对象。只有 EntityProxy 对象可以以这种方式进行序列化。GWT 文档中没有提到用于对非-EntityProxy 对象进行此类序列化的方法,因此我认为迄今为止还没有现成的解决方案。对于非-EntityProxy 对象,GWT 文档(上面引用)建议使用 JSON 序列化。


我想使用GWT的库方法来序列化/反序列化对象,而不是JSON。您能否举个例子,说明如何使用RequestFactory#getSerializer()来实现? - AKFA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接