2011-11-05 8 views
5

リクエストメソッドでジェネリックを使用することはできますか?または、この問題を回避する方法がない場合は?工場ジェネリックメソッドのプロパティをリクエスト

ページネーションを実装したいとします。だから私の要求インターフェイスでは、私はそのようなメソッドを持っています:

public List<UserProxy> getUserList(int offset, int limit); 

しかし、リストは限られたデータのみを返します。ページ区切りの実装には、合計要素も必要です。 MyResultObjectに、私はプロパティとしてリストとtotalCountプロパティを保存する場所

public MyResultObject<User> getUserList(int offset, int limit) 

:RPCスタイルでは、私は結果オブジェクトを使用します。残念ながら、RFではそれができません。また、GWT-RPCでは、1つのメソッドからコマンドパターンと検索リストを使用し、1回のリクエストで別のメソッドからtotalcountを取得できました。

要素リストでtotalcountを同時に取得するにはどうすればよいですか?

答えて

3

あなたが(確かUserProxyに特化)MyResultObjectProxyを持つことができる、またはあなたが同じHTTPバッチリクエストにあなたの2つの要求(リストと総数)を作ることができます。

MyContext ctx = factory.context(); 
ctx.getUserList(offset, limit).to(new Receiver<List<UserProxy>>() { … }); 
ctx.getUserTotalCount().to(new Receiver<Integer>() { … }); 
ctx.fire(); 

GWT 2.4以降、RFサポートを多態性なので、特定のEntityProxy(またはValue Proxy)に特化していないMyResultObjectProxyを使用することもできますが、実際にはうまくいかないかどうかは分かりません。

+0

あなたのfirs aproachは機能しますが、私は、ページビューで表示したい各エンティティに対してMyResultObjectProxを記述する必要があります。
私の意見では2番目のものがベストですが、私は2つのレシーバを作成し、それらを同期させる必要があります。実際、私はそれを行うReceiverManagerを書いていましたが、私の意見では、定型的なコードではまだ扱いにくい方法です。 – kospiotr

+0

第3のオプションは、特定のプロキシに特化していないものを書くのに最適ですが、プロキシはジェネリックまたはオブジェクトをリスト要素として受け入れないため、機能しません。他のアイデア? – kospiotr

+0

Re。 3番目のオプション:単に 'List 'を使っても?すべてのエンティティプロキシを同じベースインターフェースに拡張し、そのインターフェースを使用することもできます。確かにキャストを追加する必要がありますが、それでも定型コードは少なく、コンパイルされたコードは軽量です。 –

関連する問題