いくつかの属性を持つ単純なPOJOがあり、そのうちの1つは列挙型です。これは正常に機能しましたが、enum属性を列挙型のリストに変更すると、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{...}}
)そして魔法のように、それは機能します。この問題は私に2つの質問を導きます:
- これはGWTのバグですか?それとも私は何かが足りないのですか?
- この問題を解決するためのより良い方法はありますか?
列挙型自体は以前は機能していたので問題にはならないはずです(列挙型はデフォルトでシリアル化可能です)。また、他のGWTクラスで引数なしのコンストラクターを忘れた場合、またはシリアル化できない属性がある場合、シリアル化例外メッセージは次のようになりました: "com.google.gwt.user.client.rpc.SerializationException:Type'...'このSerializationPolicyによってシリアル化できるタイプのセットには含まれていませんでした。」
GWT2.4を使用しています