【问题标题】:GWT with Serialization带序列化的 GWT
【发布时间】:2016-06-09 13:15:24
【问题描述】:

这是我的客户端代码,用于通过 RPC 调用获取字符串“get-image-data”并从服务器获取byte[]

CommandMessage msg = new CommandMessage(itemId, "get-image-data");
cmain.ivClient.execute(msg, new AsyncCallback<ResponseMessage>() {

    @Override
    public void onFailure(Throwable caught) {

    }

    @Override
    public void onSuccess(ResponseMessage result) {
        if (result.result) {
            result.data is byte[].
        }
    }
});

从服务器端我得到的数据长度是 241336。 但我无法在onSuccess 方法中获得值。它总是使用onFailure 方法。

我登录了 Apache:

com.google.gwt.user.client.rpc.SerializationException: 类型“[B”是 不包含在可以由此序列化的类型集中 无法加载 SerializationPolicy 或其 Class 对象。

如何在 GWT 中进行序列化?

【问题讨论】:

  • ResponseMessage 长什么样子?该错误表示 byte[] cant 通过网络发送,在您的情况下,服务器表示不允许它发送该数据。
  • 您使用的是什么版本的 GWT?我的直觉告诉我 byte[] 应该是可序列化的,但我会检查一下。
  • byte[] 绝对是可序列化的。 developerlife.com/tutorials/?p=131 检查您的浏览器是否缓存了旧编译的 JS。执行 Ctrl-F5 刷新缓存,它可能会起作用。
  • 可能可序列化,但前提是 rpc 服务已声明它是允许服务器发送的东西。

标签: serialization gwt


【解决方案1】:

1) 创建一个实现 Serializable 接口的 pojo 让这个 pojo 在 RPC 服务的响应中拥有你想要的所有数据,在本例中为 image-data

2) 在您的 RPC 服务的响应中传递这个 pojo。

下面的教程有足够的信息来创建 RPC 服务 http://www.gwtproject.org/doc/latest/tutorial/RPC.html

【讨论】:

    【解决方案2】:
    1. 您传入和传出服务器的对象必须实现 IsSerializable。

    2. 您要传输的对象中的所有自定义对象也需要实现 IsSerializable。

    3. 您的对象不能有最终字段,并且需要无参数构造函数。

    4. 您需要 getter 和 setter。

    GWT 中常见的序列化对象:

    public class MyClass implements IsSerializable {
    
           private String txt;
           private MyOtherClass myOtherClass; // Also implements IsSerializable
    
           public MyClass() {
    
           }
    
           public String getTxt() {
               return this.txt;
           }
    
           public void setTxt(String txt) {
               return this.txt = txt;
           }
    
           public String getMyOtherClass() {
               return this.myOtherClass;
           }
    
           public void setMyOtherClass(MyOtherClass myOtherClass) {
               return this.myOtherClass = myOtherClass;
           }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多