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()。
アドバイスをいただければ幸いです。ありがとうございました。
をいただき、ありがとうございます優れた応答。私は今、より良い理解を持っています。私はまだ私のcelltableを更新するeditProxyへの参照を取得することができません。私はpersistメソッドから新しいプロキシを返そうとしましたが、それはReqeustFactoryインターフェイスを破壊します。セルテーブルが自動的に更新されることを期待していました。セルテーブルが表示しているプロキシで発生した編集後にセルテーブルを更新するにはどうすればよいでしょうか? onSuccess(voidレスポンス){ proxy.getAdTitle(); //この時点のプロキシには古い値があります showListView(); } –
UIを更新する最も堅牢な方法は、UIエレメントが共有の 'EventBus'の' EntityProxyChange'イベントをリッスンするようにすることです。 UI要素が気になるエンティティが更新されたという通知を受け取ると、必要なデータを取得するために独自の 'RequestFactory.find()'(イベントにはIDだけが含まれているため)を作成する必要があります。このデカップリングは、コード内の懸案事項間の相互配線の量を減らすのに役立ちます。 GWT 2.4では、 'RequestBatcher.get()。find()'を使用すると、これがより効率的になります。 – BobV