GWT LocalStorage — объекты хранилища

В этом документе говорится:

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

Может ли кто-нибудь помочь мне «упорядочить» объект, чтобы сохранить его на клиенте? Есть ли у GWT какой-то способ сделать это?


person nap.gab    schedule 26.02.2013    source источник
comment
Вы имеете в виду, что хотите преобразовать объект GWT (java) в строку ??   -  person Suresh Atta    schedule 26.02.2013
comment
я имею в виду, что означает руководство... Мне нужно сохранить объект на клиенте с локальным хранилищем, но мой объект не является строкой.   -  person nap.gab    schedule 28.02.2013


Ответы (3)


Вы можете попробовать gwt-storage https://github.com/seanchenxi/gwt-storage, его основная функция заключается в хранении java-объекта в хранилище html5 (localstorage/sessionstorage)

person Xi CHEN    schedule 19.02.2015

Вы должны сериализовать свои объекты. Вы можете сохранить полезную нагрузку, которая передается как String в TransportReceiver (если вы используете RequestFacotries):

public class CustomTransportReceiver implements TransportReceiver {

    @Override
    public void onTransportSuccess(String payload) {

        //Save payload to LocalStorage

    }

    @Override
    public void onTransportFailure(ServerFailure failure) {
        //Handle Failure

    }

}

Создайте свой собственный RequestTransport:

public class AppRequestTransportLocalStorage extends DefaultRequestTransport {
        @Override
    public void send(String payload, TransportReceiver receiver) {
           super.send(payload, new CustomTransportReceiver());
    }
}

И где вы инициализируете, вы RequestFactory пишете:

requestfactory.initialize(new SimpleEventBus(), new AppRequestTransportLocalStorage());
person Sam    schedule 26.02.2013

Вот официальная ссылка GWT для получения данных JSON.

Например, в этом учебнике

Использовать

JsonUtils.safeEval(json);

Вы можете передать этот результат в HTML5.

person Suresh Atta    schedule 26.02.2013
comment
Нам действительно нужно исправить этот учебник: используйте JsonUtils.safeEval() вместо этого метода asArrayOfStockData! - person Thomas Broyer; 26.02.2013
comment
Кстати, я открыл задачу, чтобы отследить ее: код . google.com/p/google-web-toolkit/issues/detail?id=8037 Теперь, возможно, вы могли бы обновить свой ответ;) - person Thomas Broyer; 26.02.2013
comment
Поля моего объекта не строка, а другие объекты. Я могу отправить его с json? - person nap.gab; 28.02.2013
comment
Нет, сначала вам нужно преобразовать их также в json. В противном случае toStrig будет вызывать их, и если вы их напечатаете, они будут отображаться как Objectname@id1234.... - person Suresh Atta; 01.03.2013