Java GWT异步回调上的Hashmap为空
在服务器端,我构造了一个java.util.Hashmap,用值(键和值都是字符串)填充它,并通过异步回调将其传递回客户端。当它返回到客户端时,它是空的 我可以用一个只在一个地方服务器端使用的新hashmap来复制它。Java6和GWT2.7 服务器端服务:Java GWT异步回调上的Hashmap为空,java,gwt,Java,Gwt,在服务器端,我构造了一个java.util.Hashmap,用值(键和值都是字符串)填充它,并通过异步回调将其传递回客户端。当它返回到客户端时,它是空的 我可以用一个只在一个地方服务器端使用的新hashmap来复制它。Java6和GWT2.7 服务器端服务: public class Service extends RemoteServiceServlet implements IService { public Model buildModel() { Model mode
public class Service extends RemoteServiceServlet implements IService {
public Model buildModel() {
Model model = new Model();
model.addItemToMyMap("key", "value");
return model;
}
}
public class Model implements Serializable {
private Map<String, String> myMap = new HashMap<String, String>();
public void addItemToMyMap(String key, String value) {
if(key != null) {
myMap.put(key, value);
}
}
public Map<String, String> getMyMap() {
return myMap;
}
}
public interface IServiceAsync {
public void buildModel(AsyncCallback<Model> callback); {
}
型号:
public class Service extends RemoteServiceServlet implements IService {
public Model buildModel() {
Model model = new Model();
model.addItemToMyMap("key", "value");
return model;
}
}
public class Model implements Serializable {
private Map<String, String> myMap = new HashMap<String, String>();
public void addItemToMyMap(String key, String value) {
if(key != null) {
myMap.put(key, value);
}
}
public Map<String, String> getMyMap() {
return myMap;
}
}
public interface IServiceAsync {
public void buildModel(AsyncCallback<Model> callback); {
}
公共类模型实现可序列化{
私有映射myMap=newhashmap();
公共void addItemyMap(字符串键、字符串值){
if(key!=null){
myMap.put(键、值);
}
}
公共地图getMyMap(){
返回myMap;
}
}
异步接口:
public class Service extends RemoteServiceServlet implements IService {
public Model buildModel() {
Model model = new Model();
model.addItemToMyMap("key", "value");
return model;
}
}
public class Model implements Serializable {
private Map<String, String> myMap = new HashMap<String, String>();
public void addItemToMyMap(String key, String value) {
if(key != null) {
myMap.put(key, value);
}
}
public Map<String, String> getMyMap() {
return myMap;
}
}
public interface IServiceAsync {
public void buildModel(AsyncCallback<Model> callback); {
}
公共接口IServiceAsync{
公共void构建模型(异步回调){
}
客户端:
service.buildModel(new AsyncCallback<Model>() {
public void onSuccess(Model model) {
logger.warning(model.getMyMap().size());
}
public void onFailure(Throwable caught) {
logger.warning("ERROR!");
}
}
service.buildModel(新的AsyncCallback(){
成功时的公共无效(模型){
logger.warning(model.getMyMap().size());
}
失败时的公共无效(可丢弃){
记录器。警告(“错误!”);
}
}
问题已解决。Eclipse保存操作使映射成为最终映射,从而阻止序列化。当我删除最终修改器(并阻止Eclipse将其重新添加)时,我能够在客户端查看映射的内容。问题已解决。Eclipse保存操作使映射成为最终映射,从而阻止序列化。当我删除最终修改器(并阻止Eclipse将其重新添加)时,我可以在客户端看到地图的内容。我不是100%了解这一点,但我非常确定您的模型
需要实现可序列化
接口。我的缺点是,我忘记了包含它。其他原语和字符串属性都很好。您的意思是模型
类应该实现接口Serializable
接口,是吗?GWT支持Serializable。我不是100%支持它,但我很确定您的模型
需要实现Serializable
接口。我的错,是这样的,我只是忘了包括它。其他原语和字符串属性都可以。您的意思是模型
类应该实现IsSerializable
接口,是吗?GWT支持Serializable。