0

我有一个ArrayListwhere ShortcutVirtualSystemEntry

public class ShortcutVirtualSystemEntry extends VirtualSystemEntry implements IsSerializable {

  public ShortcutVirtualSystemEntry(String id, String label, String image,
      String tooltip, String parent, int x, int y, int tray, Command action) {
    super(id, label, image, tooltip, parent, x, y, tray, action);
  }

public ShortcutVirtualSystemEntry() {

}

}

当我尝试ArrayList通过调用从客户端传递到服务器RPC时,列表中的所有对象都被实例化但这里没有数据,RPC:

docService.saveDocument2(shortcuts,
                new AsyncCallback<Void>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        Window.alert("Faliled");
                        caught.printStackTrace();
                    }

                    @Override
                    public void onSuccess(Void result) {
                        Window.alert("Success");

                    }
                });

服务器端:

@Override
public void saveDocument2(
        List<ShortcutVirtualSystemEntry> shortcuts) {
    for(ShortcutVirtualSystemEntry v: shortcuts)
    {
        System.out.println("Image "+v.getImage());// Prints : Image null...
    }


}

那么为什么我必须丢失我的列表数据呢?我做错了什么

提前非常感谢:)

4

2 回答 2

1

我对GWT了解不多。但是 RPC 的共同规则是确保集合中的元素也是可序列化的。因此,如果您要发送可序列化的列表,但列表中的对象不可序列化,那么您将无法通过 RPC 正确获取元素。因此,请确保列表中的对象是可串行化的。

于 2013-06-12T07:19:43.030 回答
0

据我所知,您的代码应该可以工作。可能您的问题出在其他地方,即您忘记在构造函数中设置图像,或者您只是没有设置图像。

GWT 重要的是,您通过 RPC 发送的对象是可序列化的,并且通常还有助于为这些对象创建一个空的构造函数。

萨拉约格

于 2013-06-12T07:35:38.100 回答