AutoBeans を使用して、GWT-RPC 以外の Java ベースの Web サービスからの JSON データをマップしています。1 つのマッピングを除いて、これまでのところすべてが機能しています。
サーバー側では、クラスにはタイプ Map のプロパティがあり、MyAbstractParentObject は約 15 の異なる子クラスの親クラスです。
それをクライアントの対応する AutoBean インターフェイスにマップすると、デコード後に MyAbstractParentObject をその子型にダウンキャストできません。AutoBeans がポリモーフィックをサポートしているかどうかを確認するために、GWT のドキュメントと「Google」を隅々まで調べましたが、どちらの方法でも答えが得られませんでした。インターセプターとカテゴリーはこれを処理できないようです。ゲッター/セッターではないインターフェースに存在させたいメソッドだけです。
JSON データの type フィールドを使用して子クラスのインスタンスを作成する回避策を試みていましたが、AutoBean では生の JSON にアクセスできません。デバッガーでは保護されたフィールドとして表示されますが、 'データ'。元の Bean をデコードしようとすると、MyAbstractParentObject のフィールドしかありません。
私が見ることができる唯一の選択肢は次のとおりです。
- JSON をデコードするときに MyAbstractParentObject の子を適切に処理できる独自の AutoBeanCodex を拡張または作成します。
- MyAbstractParentObject AutoBean で未加工の JSON にアクセスする方法を見つけ、それを使用してその場で子クラスのインスタンスを作成およびインスタンス化します。
- GWTProJSONSerializer や piriti などの他の JSON-GWT シリアル化フレームワークに切り替えます。
どんな助けでも大歓迎です。