2011-07-03 13 views
2

EventBus eを注入するときに奇妙な問題が発生しましたが、例外がありました。プロジェクトはmvpを使用してgwtMVP GWT - EventBus注入問題

サンプルコードです。ここでジン

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(); 

} 

私はどれがどんな考えを持っている

GWT-プレゼンタージン1.0を使用しているのですか?

おかげ

編集:

例外も

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" /> 

答えて

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(); 
} 
+0

に注釈を付けることがあります! :) みんなありがとう。 – adgfs

関連する問題