GWT错误:无法反序列化响应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GWT错误:无法反序列化响应相关的知识,希望对你有一定的参考价值。

我开发了几个GWT Web应用程序。最新的一个是对另一个的一点修改。除了最新版本之外,它们都运行良好。例外是:

The response could not be deserialized

我在Hibernate和GWT之间使用Hibernate和数据传输对象。每个DTO都实现了java.io.Serializable接口。正如我之前所说,在其他应用程序中运行良好。有人可以帮我解决这个错误吗?我不知道原因是什么。

我的Hibernate对象代码是:

public List<AttributeDTO> getAttributes(){
    String sql = "from Attribute where (select max(tDate) from Attribute)-tDate < '0 days 00:05'";
    List<Attribute> attributes = new ArrayList<Attribute>(DatabaseManager.createQuery(sql));
    List<AttributeDTO> attributeDTOs = new ArrayList<AttributeDTO>(attributes != null ? attributes.size() : 0);
    if (attributes != null) {
        for (Attribute attribute : attributes) {
            String date = format.format(attribute.gettDate());
            attributeDTOs.add(new AttributeDTO(attribute.getiAttrId(),attribute.getsName(),attribute.getsValue(),date,attribute.getiDeviceId(),attribute.getsUnits(),new ApplicationFieldDTO()));
        }
    }
    return attributeDTOs;
}

而AttributeDTO是:

public class AttributeDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    private int iAttrId;
    private String name;
    private String value;
    private String date;
    private String units;
    private int iDeviceId;
    private ApplicationFieldDTO appField;

    public AttributeDTO() {}

    public AttributeDTO(int attrId, String name, String value, String date, int deviceId, String units, ApplicationFieldDTO appField) {
        this.iAttrId = attrId;
        this.name = name;
        this.value = value;
        this.date = date;
        this.iDeviceId = deviceId;
        this.units = units;
        this.appField = appField;
    }
}

从GWT调用getAttributes()方法,该方法返回AttributeDTO的List。

谢谢!!!

答案

如果只有一个类的成员不可序列化,也会出现错误 - 因此错误也可能出现在ApplicationFieldDTO的定义中。

顺便说一下,你也可以使用Gilead而不是使用数据传输对象,甚至延迟加载也可以。 (但对于您现有的应用程序,引入Gilead可能需要做很多工作。)

另一答案

我遇到了同样的麻烦。尝试使用com.google.gwt.user.client.rpc.IsSerializable而不是Serializable。它对我有用,我希望对你有所帮助:)

另一答案

使用ArrayList而不是List,然后再试一次

看看这个post

另一答案

我也遇到过类似的问题。在我的例子中,从UI提交值,异常

“GWT错误:响应无法反序列化”

显示。我发现整个代码库没有正确打包转换成.war文件。我使用Ant Build方法创建.war文件。

后来我在eclipse中安装了一个插件,它对我来说很好用。我使用这个link从eclipse市场安装了插件

以上是关于GWT错误:无法反序列化响应的主要内容,如果未能解决你的问题,请参考以下文章

GWT JPA - 无法反序列化响应

GWT:枚举列表抛出“无法反序列化响应”

GWT 反序列化 RPC 调用中的泛型列表

GWT 2.3 升级后的 RPC 错误

什么反序列化 GWT RPC 调用客户端

无法反序列化 JSON 响应