Gwt 如何将SerializationStreamWriter应用于存储

Gwt 如何将SerializationStreamWriter应用于存储,gwt,serialization,Gwt,Serialization,是否有一种简单的方法来使用SerializationStreamWriter进行自定义,而无需编写自己的生成器 (例如html5存储) GWT的javadoc说明的很少。没有 因为GWT-RPC序列化是不对称的,所以它不能用于本地存储:服务器理解客户端发送的内容,客户端理解服务器发送的内容,但他们不理解自己编写的内容。我们正在为当前项目编写一个实现,这正是您想要做的:将自定义对象序列化为字符串并保存到localstorage,将字符串反序列化为对象… 所以,对我来说,可以在客户端使用Serial

是否有一种简单的方法来使用SerializationStreamWriter进行自定义,而无需编写自己的生成器

(例如html5存储)

GWT的javadoc说明的很少。

没有


因为GWT-RPC序列化是不对称的,所以它不能用于本地存储:服务器理解客户端发送的内容,客户端理解服务器发送的内容,但他们不理解自己编写的内容。

我们正在为当前项目编写一个实现,这正是您想要做的:将自定义对象序列化为字符串并保存到localstorage,将字符串反序列化为对象…

所以,对我来说,可以在客户端使用SerializationStreamWriter进行序列化,使用SerializationStreamReader进行反序列化

要实现这一点

SerializationStreamWriter/SerializationStreamReader不需要生成器,而需要TypeSerializer的生成器(实现com.google.gwt.user.client.rpc.impl.SerializerBase)。这非常简单,请查看com.google.gwt.user.rebind.rpc.TypeSerializerCreator,并在生成器中使用它。或者,如果在一个RPC服务中引用了所有自定义对象,则可以只使用生成的RPC服务的TypeSerializer

并且您必须编写SerializationStreamWriter或SerializationStreamReader的正确实现。因为有两种序列化字符串格式(请求使用的格式和响应使用的格式):

在GWT中,您拥有 ClientSerializationStreamWriter,用于客户端序列化/反序列化的ClientSerializationStreamReader; 服务器端序列化/反序列化的ServerSerializationStreamWriter、ServerSerializationStreamReader

客户端序列化流编写器将对象序列化为格式_1,只有服务器序列化流读卡器可以读取它(将其反序列化为对象)

ServerSerializationStreamWriter将对象序列化为格式_2,并且只有客户端SerializationStream读卡器才能读取它(将其反序列化为对象)


所以,如果您想使用ClientSerializationStreamWriter序列化您的对象,那么您需要做的是,为客户端编写ServerSerializationStreamReader的类似实现。或者,如果希望使用ClientSerializationStreamWriter反序列化字符串,则在客户端编写ServerSerializationStreamWriter的类似实现。这并不困难,因为格式_1格式_2之间的差异只是顺序不同。

我想在适当的时候你创建了?!谢谢