3

独自のジェネレーターを作成せずに、SerializationStreamWriterをカスタム目的で使用する簡単な方法はありますか?

(たとえば、html5ストレージ)

GWTのjavadocはほとんど何も伝えていません。

4

2 に答える 2

3

現在のプロジェクトの実装を作成しています。これは、カスタムオブジェクトを文字列にシリアル化してローカルストレージに保存し、文字列をオブジェクトに逆シリアル化するという、まさにあなたが望むことを実行します。

したがって、私にとっては、シリアル化にSerializationStreamWriterを使用し、CLIENTSIDEでの逆シリアル化にSerializationStreamReaderを使用することが可能です。

これを実現するために、

SerializationStreamWriter / SerializationStreamReaderのジェネレーターは必要ありませんが、TypeSerializer(com.google.gwt.user.client.rpc.impl.SerializerBaseを実装する)のジェネレーターは必要です。そして、これは静かでシンプルです。com.google.gwt.user.rebind.rpc.TypeSerializerCreatorを見て、ジェネレーターで使用してください。または、すべてのカスタムオブジェクトが1つのRPCサービスで参照されている場合は、生成されたrpcサービスのTypeSerializerを使用できます。

また、SerializationStreamWriterまたはSerializationStreamReaderの適切な実装を作成する必要があります。2つのシリアル化された文字列形式(要求使用形式と応答使用形式)があるため:

GWTには、クライアント側のシリアル化/逆シリアル化用のClientSerializationStreamWriter、ClientSerializationStreamReaderがあります。ServerSerializationStreamWriter、サーバー側のシリアル化/逆シリアル化用のServerSerializationStreamReader。

Client SerializationStream WriterはオブジェクトをFORMAT_1にシリアル化し、 Server SerializationStream Readerのみがオブジェクトを読み取ることができます(オブジェクトに逆シリアル化します)。

サーバーSerializationStreamWriterは、オブジェクトをFORMAT_2にシリアル化し、 Client SerializationStream Readerのみがオブジェクトを読み取ることができます(オブジェクトに逆シリアル化します)。

したがって、ClientSerializationStreamWriterを使用してオブジェクトをシリアル化する場合は、クライアント側でServerSerializationStreamReaderの同様の実装を作成する必要があります。または、ClientSerializationStreamWriterを使用して文字列を逆シリアル化する場合は、クライアント側でServerSerializationStreamWriterの同様の実装を記述します。FORMAT_1FORMAT_2の違いは順序だけなので、これは難しくありません。

于 2012-08-31T09:41:51.823 に答える
0

いいえ。

GWT-RPCシリアル化は非対称であるため、ローカルストレージには使用できません。サーバーはクライアントが送信したものを理解し、クライアントはサーバーが送信したものを理解しますが、自分が書いたものは理解しません。

于 2012-05-13T21:01:35.727 に答える