さまざまな種類の要素を含むリストに少し問題があります。以前にこの問題に遭遇したことがある人がいるかどうかを確認したいと思います。問題は @ExtraTypes を使用して解決する必要がありますが、うまくいかないので、正しく使用していないと思います。したがって、シナリオは次のとおりです (明確にするために Bean 名が変更されています)。
全般的:
- RequestFactory で GWT 2.5 を使用しています。
サーバ側:
- 私は、とりわけ、を含む RootBean を持っています
リスト <ChildBean>
. - この ChildBean には、いくつかのプリミティブ属性が含まれています。
- ChildBean は、すべての親属性を継承し、さらにいくつかを追加する MoreSpecificChildBean によっても拡張されます。
- RootBean は、いくつかのロジックに応じて、タイプ ChildBean および MoreSpecificChildBean の要素で満たされたリストを取得します。
クライアント側:
IRootBeanProxy は、次の注釈を持つ ValueProxy です。
@ProxyFor (値 = RootBean.class) @ExtraTypes ({IMoreSpecificChildBeanProxy.class})
リストが含まれています
リスト <IChildBeanProxy> getChildren ();
- IChildBeanProxy は ValueProxy です。
@ProxyFor (値=ChildBean) パブリック インターフェイス IChildBeanProxy は ValueProxy を拡張します
- IMoreSpecificChildBeanProxy は ValueProxy です。
@ProxyFor (値 = MoreSpecificChildBean) パブリック インターフェイス IMoreSpecificChildBeanProxy は IChildBeanProxy を拡張します
- Request コンテキストには Request を返すメソッドがあり、ここにも @ExtraTypes アノテーションを追加しました。
@Service (値 = CompareService.class、ロケーター = SpringServiceLocator.class) @ExtraTypes ({ICildBeanProxy.class, IMoreSpecificChildBeanProxy.class}) パブリック インターフェイス ICompareRequestContext は RequestContext を拡張します { <IRootBeanProxy> の比較を要求します (整数 id1、整数 id2);
質問
おそらくこれらの注釈を使用すると、RF はポリモーフィックな継承クラスの存在を認識する必要がありますが、クライアントで取得できるのは IChildBeanProxy 要素のリストを持つ IRootBeanProxy だけです。このリストには MoreSpecificChildBean が含まれていますが、ICildBeanProxy の形になっているため、他のものと区別できません。ExtraTypes アノテーションを間違った場所などに設定している場合、私は何が間違っているのか疑問に思っています。
誰?
すべての助けをありがとう!!