1

Javadoc forは次のようにRequestContext#fire()のみ述べています。

RequestContext に関連付けられた累積された変更とメソッド呼び出しを送信します。

Flowセクションの下のGWT可動部品wikiエントリには、次のようにのみ記載されています。

  • 蓄積されたすべての操作は、プロキシのプロパティをトラバースすることによってドメイン オブジェクトに適用されます。
  • ペイロード内のすべてのメソッド呼び出しが実行されます。

ReqestContextしかし、これらのメソッドは、クライアント側のインスタンスで「実行」(蓄積) されたのと同じ順序でサーバー側で実行されますか?

私の状況では、クライアント側で実行すると:

context.persist().using(proxy)
context.find(proxy.stableId().to(updatingReceiver))
context.fire()

次に、サーバー側find()で後で呼び出されることを確認しpersist()updatingReceiver、更新された(persist()'ed)エンティティのプロキシを引数として取得できますか?

編集:

さらに進んでReciever、対応するメソッドが蓄積されたのとまったく同じ順序で応答が呼び出された後にクライアントに戻ることを確認できますか?

最後に、すべてのアクションの後、応答処理の最後に呼び出されるアクションを追加する方法はありReceiverますか?

私はこのようなものがうまくいくかもしれないと思った:

requestContext.fire(new Receiver<Void>() {
    @Override
    public void onSuccess(Void response) {
        //Things to do after all receivers
    });

そして、それは本当に期待どおりに機能しているように見えますが、JavadocがRequestContext.fire(Receiver)メソッドについて教えてくれるのは次のとおりです。

エラーまたは検証の失敗を受け取る場合のみ。

私の仮定が正しいかどうかは100%確信が持てません。

4

1 に答える 1

2

はい、メソッド呼び出しの順序は、サーバー側と s を呼び出すときにクライアント側の両方で保持されますReciever

キューは、ArrayList呼び出しオブジェクトが追加される単純なものです。サーバー側では、受信した順序で処理されます。

Request-Context-level Receiverは常に、呼び出し用のものの後に呼び出されます。onSuccessこれは、呼び出しの結果がどうであれ (すべて失敗した場合でも)、呼び出しのバッチが正常に処理されたことを通知するために常に呼び出されます。これは、一般的な障害、つまりネットワーク エラー、またはサーバー側で要求/応答を (逆) シリアル化する際のエラーのonFailure場合にのみ呼び出されます。http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/web/bindery/requestfactory/shared/impl/AbstractRequestContext.java?r=10835 を参照してください。 #345

于 2012-04-30T09:25:21.607 に答える