Использование механизма сериализации / десериализации RPC, встроенного в GWT - PullRequest
5 голосов
/ 29 июля 2011

Я занимаюсь разработкой автономного приложения GWT с использованием HTML5 Local Storage.Я хотел бы кэшировать / хранить объекты переноса с помощью com.google.gwt.storage.client.Storage (представлен в версии 2.3).Но проблема в том, что на данный момент (версия 2.3) Хранилище может сохранять только строковые значения.

Есть ли возможность использовать встроенный в GWT механизм сериализации / десерализации rpc из кода на стороне клиента?Так что я смогу сериализовать объекты передачи и хранить их в локальном хранилище, извлекать их при необходимости и десериализовать содержимое.

1 Ответ

1 голос
/ 29 июля 2011

Документы GWT имеют следующее значение:

Локальное хранилище - это строковое хранилище

Локальное хранилище HTML5 сохраняет данные в виде строкикак пары ключ-значение.Если данные, которые вы хотите сохранить, не являются строковыми данными, при использовании LocalStorage вы несете ответственность за преобразование в строку и из строки.Для прокси-классов, используемых с GWT RequestFactory, вы можете использовать RequestFactory # getSerializer () для сериализации строк.Для объектов без прокси вы можете использовать JSON stringify и анализировать.


РЕДАКТИРОВАТЬ:

RequestFactory#getSerializer() возвращаетреализация ProxySerializer.Но

ProxySerializer Сериализует графики объектов EntityProxy.ProxySerializer связывается с экземпляром ProxyStore, когда он создается через RequestFactory.getSerializer (ProxyStore).

Таким образом, вы не можете использовать его для сериализации произвольных объектов.Только EntityProxy объекты могут быть сериализованы таким образом.В документации GWT не упоминается какой-либо метод для такой сериализации для не EntityProxy объектов, поэтому я думаю, что можно с уверенностью предположить, что пока нет готового решения для этого.Для объектов, отличных от EntityProxy, в документации GWT (приведенной выше) рекомендуется использовать сериализацию JSON.

...