2012-09-25 82 views
0

我有一個簡單的POJO,它有一些屬性,其中一個是枚舉。這工作得很好,但是當我將枚舉屬性更改爲枚舉列表時,GWT給了我一個序列化異常「無法反序列化響應」。GWT:枚舉拋出列表「無法反序列化」

這工作:

public class Report implements Serializable, Comparable<Report> { 

    private static final long serialVersionUID = 1L; 

    private long id; 
    //some more attributes, all serialize fine 
    private ReportCategory category; // the enumeration 

    public ReportSVO(){ 
    } 
     //.. generated getters and setters 
} 

當我改變了private ReportCategory category;private List<ReportCategory> categories;我得到了(反)序列化異常。

從預感中,我改變了枚舉爲一個內部類:(public enum ReportCategory{...}public class ReportCategory{ private Name categoryName; public enum Name{...}})和魔術一樣,它的工作原理。 此問題導致我有兩個問題:

  1. 這是一個GWT錯誤?或者我錯過了什麼?
  2. 有沒有更好的方法來解決這個問題?

枚舉本身不應該是一個問題,因爲它之前工作(和枚舉可以默認序列化)。另外,當我忘記其他GWT類的無參數構造函數或具有不可序列化屬性時,序列化異常消息如下所示:「com.google.gwt.user.client.rpc.SerializationException:Type'...'不包括在該組的類型,可以通過這個SerializationPolicy被序列化。」

我使用GWT 2.4

回答

0

事實證明,我的問題的原因是POJO類之間的不匹配上午(報告)以及該類的編譯成Javascript版本。這是因爲我改變了類並重新發布到服務器,但忘記了重新編譯客戶端代碼...

所以在服務器端屬性是一個列表,在客戶端它仍然枚舉和反序列化當然失敗了。

總而言之,我希望這條線能夠幫助未來的某個人。