3

我想在我的项目中使用 GWT 的 Editor Framework。

在我的视图(实现编辑器)中,我有我的 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());

GIN模块:

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

AppointmentDriver接口:

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

}

后来当我听一个按钮事件时,我调用:

appointmentDriver.flush();

但所有属性都为空,并且没有抛出错误消息。如果我在调试器中查看文本框小部件,“编辑器”的实例也为空。不知道internas,但也许这对您来说是一个提示。

预约 POJO(当然有 void setText(String text)/String getText()):

 String text;

目前我完全陷入困境,所以任何帮助都非常受欢迎。

谢谢!!

4

2 回答 2

1

我看到你做了一个getView(),它是否返回与传递给构造函数的视图相同的视图,并且与 ui 中显示的相同?可能是驱动程序使用与实际显示的视图不同的视图进行初始化,因此您将从不正确的视图中获取数据。我也不明白你为什么要绑定,似乎没有必要?

于 2011-08-02T12:57:41.693 回答
0

我不确定,但我认为问题是,你只是在打电话 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。

于 2011-08-02T11:21:56.793 回答