ich mit einer einzigen Eintrittspunkt Klasse ein Multi-Modul-Projekt am schaffen, sondern hat einige Probleme,Latente Bindung in Multi-Modul-Projekt und Fragen während EventBus Zugriff
Ich habe 2 Module wie: -
Diese mein Hauptmodul ist,
@ChildModule(moduleClass = MyChildModule.class)
public class MyMainModule implements EntryPoint {
@Override
public void onModuleLoad() {
Mvp4gModule module = (Mvp4gModule) GWT.create(Mvp4gModule.class);
module.createAndStartModule();
RootPanel.get().add((Widget) module.getStartView());
}
}
und erstellt ein Kind Modul wie
public interface MyChildModule extends Mvp4gModule {
}
Mein Base EventBus ist,
@Events(startPresenter = HomePresenter.class,historyOnStart=true)
@ChildModules(@ChildModule(moduleClass=MyChildModule.class, async=true, autoDisplay=false ))
public interface BaseEventBus extends EventBusWithLookup {
@InitHistory
@Event(handlers = HomePresenter.class)
void init();
@Start
@Event(handlers = HomePresenter.class)
void start();
@Event(forwardToModules=MyChildModule.class)
void getContentBody();
@Event(handlers = HomePresenter.class)
void setContentBody(ContentBodyView contentBodyView);
}
und Kind Eventbus ist,
@Events(module=MyChildModule.class, startPresenter = ContentBodyPresenter.class)
public interface MyChildEventBus extends EventBusWithLookup {
@Event(generate = ContentBodyPresenter.class)
void getContentBody();
@Event(forwardToParent=true)
void setContentBody(ContentBodyView contentBodyView);
}
HomePresenter, Homeview sind in MyMainModule und ContentBodyPresenter, ContentBodyView sind von MyChildModule.
@Presenter(view = HomeView.class)
public class HomePresenter extends BasePresenter<HomeView, BaseEventBus>{
getErrorBtn().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
eventBus.showError("Error");
}
});
}
die oben Moderator Zugriff BaseEventBus und ContentBodyPresenter ist als followa,
@Presenter(view = ContentBodyView.class)
public class ContentBodyPresenter extends BasePresenter<ContentBodyView, MyChildEventBus>{
getErrorBtn().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
eventBus.showError("Error");
}
});
}
hier, wenn ich EventBus zugreifen es noch BaseEventBus Veranstaltung Zugriff, wenn ich MyChildEventBus oben angegeben. Wieso ist es so.?
und ich erbte das MyChildModule in gwt.xml von MyMainModule wie
<inherits name='abc.xyz.MyChildModule' />
Wenn ich dieses Projekt kompilieren, sind immer latente Bindungsfehler für MyChildModule und Konsole zeigt Methode getContentBody: keine Instanz von Client .MyChildModule ist definiert. Hast du vergessen, es zu @ChildModules deiner Event-Bus-Schnittstelle hinzuzufügen?. Was kann das Problem sein? Gibt es einen strukturellen Fehler im obigen Code?
Also brauche ich eine einfache Klasse erstellen genannt MyChildModule.? –
und wie kann ich auf das Kind eventBus zugreifen? –
Sie müssen keine MyChildModule-Klasse erstellen. Das Framework kennt alles, was es benötigt. Siehe: https://github.com/mvp4g/mvp4g/wiki/05.-Code-splitting –