编辑器字段未更新

时间:2011-08-01 22:11:04

标签: gwt gwt-editors

我想在我的项目中使用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,并且不会引发错误消息。如果我将调试器放入文本框小部件中,“editor”的实例也是null。不知道内部,但也许这是对你的暗示。

约会POJO(当然使用void setText(String text)/ String getText()):

 String text;

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我不确定,但我认为问题是,你只是在呼叫SimpleBeanEditorDriver.initialize(E editor)。据我记忆,您需要致电RequestFactoryEditorDriver.initialize(EventBus, RequestFactory, E)

也许我的小(现在更新为GWT 2.3,但仍然完全未经修饰)example project可以帮助你。

以下是我进行初始化调用的代码段:

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

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

应该可以重构项目以使用GIN。