我想在我的项目中使用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;
目前我完全陷入困境,所以任何帮助都非常受欢迎。
谢谢!
答案 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。