2011-06-08 8 views
2

エディタを使って変更を加えた後、セルテーブルを更新する方法がわかりません。編集したプロキシを取得できたら、dataproviderを使用してセルテーブルを更新できます。RequestFactoryEditorDriverから編集したプロキシを取得するには

public void saveCampaign() { 
    driver.flush(); 
    // the problem. proxy at this point should have the new values?.... 
    context.persist().using(proxy).fire(new Receiver<Void>() { 
    @Override 
    public void onSuccess(Void response) { 
     showListView(); 
    } 
    }); 
} 

.using(プロキシ)のプロキシには、エディタで加えられた変更が含まれていません。ただし、サーバー上のpersistメソッドは更新された値を取得します。私はサーバーからデータをリロードする場合、私はセルテーブルに正しい値を取得します。

public void editCampaign(CampaignProxy proxy) { 
    this.proxy = proxy; 
    if (proxy != null) { 
    context = AEHOME.requestFactory.campaignRequest(); 
    showEditView(); 
    } 
} 

private void showEditView() { 
    driver.initialize(eventBus, AEHOME.requestFactory, editView); 
    driver.edit(proxy, context); 
    deckPanel.showWidget(deckPanel.getWidgetIndex(editView)); 
} 

プロキシがリストビューに設定されている:configurationPageView.proxy = selectionModel.getSelectedObject()。

アドバイスをいただければ幸いです。ありがとうございました。

答えて

2

あなたが要求は次のようにして構築されている方法を変更することができます:GWT 2.4で

private void showEditView() { 
    driver.initialize(eventBus, AEHOME.requestFactory, editView); 
    driver.edit(proxy, context); 
    // Set up method invocation and callback in advance 
    context.persist().using(proxy).to(new Receiver<Void>() { 
    @Override 
    public void onSuccess(Void response) { 
     showListView(); 
    } 
    });); 
    deckPanel.showWidget(deckPanel.getWidgetIndex(editView)); 
} 

public void saveCampaign() { 
    driver.flush().fire(); 
} 

を、あなたの現在のコードの組織を維持し、RequestContext.append()を使用することが可能になります。

public void saveCampaign() { 
    // Returns the context passed to edit() 
    RequestContext ctx = driver.flush(); 
    // append() is generic and returns the type returned by myProxyContext(); 
    ctx.append(requestFactory.myProxyContext()).persist().using(proxy).fire(....); 
} 
+0

をいただき、ありがとうございます優れた応答。私は今、より良い理解を持っています。私はまだ私のcelltableを更新するeditProxyへの参照を取得することができません。私はpersistメソッドから新しいプロキシを返そうとしましたが、それはReqeustFactoryインターフェイスを破壊します。セルテーブルが自動的に更新されることを期待していました。セルテーブルが表示しているプロキシで発生した編集後にセルテーブルを更新するにはどうすればよいでしょうか? onSuccess(voidレスポンス){ proxy.getAdTitle(); //この時点のプロキシには古い値があります showListView(); } –

+0

UIを更新する最も堅牢な方法は、UIエレメントが共有の 'EventBus'の' EntityProxyChange'イベントをリッスンするようにすることです。 UI要素が気になるエンティティが更新されたという通知を受け取ると、必要なデータを取得するために独自の 'RequestFactory.find()'(イベントにはIDだけが含まれているため)を作成する必要があります。このデカップリングは、コード内の懸案事項間の相互配線の量を減らすのに役立ちます。 GWT 2.4では、 'RequestBatcher.get()。find()'を使用すると、これがより効率的になります。 – BobV

関連する問題