2

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

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(proxy)のプロキシには、エディターで行われた変更は含まれていません。ただし、サーバーの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();

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

4

1 に答える 1

2

次の手順を実行して、リクエストの作成方法を変更できます。

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();
}

GWT 2.4では、現在のコード編成を維持して以下を使用することが可能になります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(....);
}
于 2011-06-09T13:55:04.767 に答える