这份文件说:
HTML5 本地存储以字符串形式将数据保存为键值对。如果您要保存的数据不是字符串数据,则您需要在使用 LocalStorage 时负责与字符串之间的转换。对于与 GWT RequestFactory 一起使用的代理类,您可以使用 RequestFactory#getSerializer() 进行字符串序列化。对于非代理对象,您可以使用JSON stringify 和 parse。
谁能帮我“字符串化”一个对象以将其保存在客户端上?GWT 有什么方法可以做到这一点吗?
这份文件说:
HTML5 本地存储以字符串形式将数据保存为键值对。如果您要保存的数据不是字符串数据,则您需要在使用 LocalStorage 时负责与字符串之间的转换。对于与 GWT RequestFactory 一起使用的代理类,您可以使用 RequestFactory#getSerializer() 进行字符串序列化。对于非代理对象,您可以使用JSON stringify 和 parse。
谁能帮我“字符串化”一个对象以将其保存在客户端上?GWT 有什么方法可以做到这一点吗?
你可以试试gwt-storage https://github.com/seanchenxi/gwt-storage,它的主要特点是将java对象存储在html5 stroage (localstorage/sessionstorage)
你必须序列化你的对象。您可以将传输的有效负载作为字符串存储在 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());