Поля редактора не обновляются

Я хочу использовать Editor Framework GWT в своем проекте.

В моем представлении (которое реализует редактор) у меня есть поле UiBinder:

@UiField
TextBox text;

В моем Presenter я вставляю через GIN экземпляр драйвера:

@Inject
public AppointmentPopupPresenter(EventBus eventBus, MyView view, final AppointmentDriver appointmentDriver)

Когда докладчик вызывается, я пытаюсь инициализировать драйвер с помощью:

this.appointmentDriver.initialize(getView());
this.appointmentDriver.edit(new Appointment());

GINModule:

 bind(SimpleBeanEditorDriver.class).to(AppointmentDriver.class);

Интерфейс AppointmentDriver:

public interface AppointmentDriver extends SimpleBeanEditorDriver<Appointment, AppointmentPopupPresenter.MyView>{

}

Позже, когда я слушаю событие кнопки, я звоню:

appointmentDriver.flush();

но все свойства имеют значение null и не выдается сообщение об ошибке. Если я загляну в отладчик в виджет текстового поля, то экземпляр "редактора" также будет нулевым. не знаю, как это возможно, но это подсказка для вас.

Назначение POJO(конечно, с void setText(String text)/String getText()):

 String text;

На данный момент я полностью застрял, поэтому любая помощь приветствуется.

Спасибо!!

2 ответа

Решение

Я вижу, вы делаете getView() Возвращает ли он то же представление, которое было передано в конструктор, и такое же, как показано в пользовательском интерфейсе? Это может быть драйвер, инициализированный с другим видом, чем тот, который показан на самом деле, и, таким образом, вы получите данные из неправильного представления. Я также не понимаю, почему вы делаете привязку, это кажется ненужным?

Я не уверен, но я предполагаю, что проблема в том, что вы просто звоните SimpleBeanEditorDriver.initialize(E editor), Насколько я помню, нужно позвонить RequestFactoryEditorDriver.initialize(EventBus, RequestFactory, E)

Может быть, мой маленький (теперь обновленный для GWT 2.3, но все еще полностью неполированный) пример проекта может помочь вам.

Вот фрагмент, где я делаю вызовы инициализации:

    final MyRequestFactory requestFactory = GWT
            .create(MyRequestFactory.class);
    requestFactory.initialize(eventBus);

    final MyEditor myEditor = new MyEditor();
    driver.initialize(eventBus, requestFactory, myEditor);

Должна быть возможность рефакторинга проекта для использования GIN.

Другие вопросы по тегам