5

HTML5 ローカル ストレージを使用して GWT オフライン アプリケーションを開発しています。com.google.gwt.storage.client.Storage (バージョン 2.3 で導入) を使用して転送オブジェクトをキャッシュ/保存したいと考えています。しかし問題は、現在 (バージョン 2.3) の場合、ストレージは文字列値しか保存できないことです。

クライアント側のコードから GWT のビルトイン rpc シリアル化/非シリアル化メカニズムを使用する可能性はありますか? 転送オブジェクトをシリアル化してローカル ストレージに保存し、必要に応じて取得してコンテンツを逆シリアル化できるようにします。

4

1 に答える 1

1

GWTドキュメントには次のように書かれています。

ローカルストレージは文字列ストレージです

HTML5ローカルストレージは、データを文字列形式でキーと値のペアとして保存します。保存するデータが文字列データでない場合は、LocalStorageを使用するときに文字列との間で変換する必要があります。GWT RequestFactoryで使用されるプロキシクラスの場合、RequestFactory#getSerializer()を使用して文字列のシリアル化を行うことができます。非プロキシオブジェクトの場合、JSON文字列化と解析を使用できます。


編集:

RequestFactory#getSerializer()の実装を返しますProxySerializer。だが

ProxySerializerEntityProxyオブジェクトのグラフをシリアル化します。ProxySerializerは、RequestFactory.getSerializer(ProxyStore)を介して作成されるときに、ProxyStoreのインスタンスに関連付けられます。

したがって、これを使用して任意のオブジェクトをシリアル化することはできません。EntityProxyこの方法でシリアル化できるのはオブジェクトのみです。GWTのドキュメントには、非オブジェクトに対してこのようなシリアル化を行う方法が記載されていないためEntityProxy、これを行うための既成のソリューションは今のところないと想定しても問題ありません。非EntityProxyオブジェクトの場合、GWTドキュメント(上記で引用)はJSONシリアル化の使用を推奨しています。

于 2011-07-29T12:50:38.200 に答える