奇怪的问题,当我注入EventBus时,e得到了一个异常。该项目是gwt使用mvp
以下是示例代码。
杜松子酒
public interface AppGinjector extends Ginjector
{
EventBus getEventBus();
PlaceManager getPlaceManager();
}
这是切入点
public class MvpEntryPoint implements EntryPoint
{
AppGinjector ginjector = GWT.create(AppGinjector.class);
public void onModuleLoad()
{
EventBus eventBus = ginjector.geEventBus();
HelloWorldPanel display = new HelloWorldPanel();
HelloWorldPresenter presenter = new HelloWorldPresenter( display, eventBus );
presenter.bind();
RootPanel.get().add( presenter.getDisplay().asWidget() );
PlaceManager placeManager = ginjector.getPlaceManager();
placeManager.fireCurrentPlace();
}
我使用gin 1.0,gwt-presenter
有什么想法?
由于
编辑:
例外是
ERROR: Deferred binding result type 'net.customware.gwt.presenter.client.EventBus' should not be abstract.
ERROR: Unable to load module entry point class com.gmgsys.mvpEntryPoint.client.MvpEntryPoint (see associated exception for details). java.lang.RuntimeException: Deferred binding failed for 'net.customware.gwt.presenter.client.EventBus' (did you forget to inherit a required module?)
...........................
也是gwt.xml
<!-- Specify the app entry point class. -->
<entry-point class='com.gmgsys.mvpEntryPoint.client.MvpEntryPoint'/>
<inherits name='net.customware.gwt.presenter.Presenter' />
<inherits name="com.google.gwt.inject.Inject" />
答案 0 :(得分:4)
我认为你缺少AbstractPresenterModule类,它确保EventBus绑定到SimpleEventBus:
bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
应该是这样的:
public class MyClientModule extends AbstractPresenterModule {
protected void configure() {
bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
// more bindings here
}
}
你必须注释你的Ginjector
@GinModules({ MyClientModule .class })
public interface AppGinjector extends Ginjector
{
EventBus getEventBus();
PlaceManager getPlaceManager();
}