2011-06-08 2 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

Вы можете изменить запрос построен, выполнив следующие действия:

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

Благодарим Вас за отличный ответ. Теперь я лучше понимаю. Я все еще не могу получить ссылку на editProxy для обновления моей таблицы сотовых телефонов. Я попытался вернуть новый прокси-сервер из метода persist, но это нарушает интерфейс ReqeustFactory. Я ожидал, что клеточная таблица будет автоматически обновляться. Что такое хороший способ обновить таблицу сотовых телефонов после редактирования, как это произошло в прокси, отображаемом в таблице сотовых телефонов? onSuccess (Void response) { proxy.getAdTitle(); // прокси в этот момент имеет старые значения showListView(); } –

+0

Самый надежный способ обновления пользовательского интерфейса состоит в том, чтобы ваш элемент пользовательского интерфейса прослушивал события «EntityProxyChange» от общего «EventBus». Когда элемент пользовательского интерфейса получает уведомление о том, что объект, о котором он заботится, был обновлен, он должен создать свой собственный 'RequestFactory.find()' (поскольку событие содержит только идентификатор) для извлечения требуемых данных. Эта развязка может помочь уменьшить количество перекрестных помех между проблемами в вашем коде. В GWT 2.4, используя 'RequestBatcher.get(), find()' сделает это более эффективным. – BobV

Смежные вопросы