Ich versuche, auf einige Objekte innerhalb einer UI: Binder-Komponente zugreifen, aber nicht sicher, wie auf den EventBus, requestFactory usw. zugreifen, ohne lästigen Code zu schreiben halte mich nachts wach (achte auch darauf, dass ich komplett neu bei JAVA bin, der Hintergrund ist in Perl/Python/PHP).Spring ROO GWT mit GIN-Injektion auf Widgets erstellt von UI: Binder
Meine ui.xml Datei:
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:ig='urn:import:com.ig.client.scaffold.ui.widget'>
<ui:style>
...
</ui:style>
<g:HorizontalPanel>
...
</g:HorizontalPanel>
</ui:UiBinder>
die EventBus Spritzen auf diese Weise mit com.ig.client.scaffold.ui.widget.R versagt hat keinen Standard (Null args) Konstruktor.
public class R extends Composite {
interface MyUiBinder extends UiBinder<Widget, R> {}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
private final EventBus eventBus;
@UiField SimplePanel fieldA, ...;
@Inject
public R(EventBus eventBus){
this.eventBus = eventBus;
initWidget(uiBinder.createAndBindUi(this));
}
}
So, wie pro die Fehlermeldung, erstelle ich eine UIFactory und dann bekomme ich einen Fehler ... '{style.entityComponent}'> fehlende erforderliche Attribut (e): EventBus Element ... (scheint, wie es die EventBus im ui zu finden versucht. Bindemittel Sheet
public class R extends Composite {
interface MyUiBinder extends UiBinder<Widget, R> {}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
private final EventBus eventBus;
@UiField SimplePanel fieldA, ...;
public @UiConstructor R(EventBus eventBus){
this.eventBus = eventBus;
initWidget(uiBinder.createAndBindUi(this));
}
@Inject
@UiFactory R makeR(){
return new R(eventBus);
}
}
Vom Lesen und Lesen und Lesen für die letzten paar Tage, ich habe die EventBus, requestFactory und historyController nicht gesehen jemand Zugriff auf direkt in der Ansicht Bindung an die Ui: Binder-Widget, die zu der Schlussfolgerung führte, dass es wahrscheinlich keine Best Practice ist a Nyway.
Sagen wir, ich habe ein Ojekt, nennen wir es Proxy, Proxy enthält handleButtonClick, das dann eventBus.doSomething() aufruft. Wie verknüpfe ich dieses Proxy-Objekt mit dem Widget ui: binder, ohne es instanziieren zu müssen oder ohne es an jedes Widget weitergeben zu müssen?
Ist es möglich, eine GIN-Injektion an einer Schnittstelle durchzuführen und diese Schnittstelle dann über die Klasse R zu implementieren, die dann irgendwie die Objekte enthält, nach denen ich suche?
Jede Lösung, die funktioniert, ist willkommen, nur auf der Suche nach einem Beispiel (das ein Java n00b verstehen kann), das mir im Grunde erlauben wird, mein Front-End mit den anderen von ROO erstellten Diensten zu verbinden.
Dank J
Dank Jason, ich lese über heute Morgen MVP docs Google-Code und es schien genau das zu sein, was ich gesucht habe, wird später am Abend implementieren. Danke eine Million :-) –
Hallo Jason, ich bekomme nicht Ihr Beispiel funktioniert, haben Sie die Quelle für mich verfügbar oder würde es Ihnen etwas ausmachen, meinen Code zu sehen und auf das Problem hinweisen - ich bin nicht verbindlich arbeiten und seit Wochen kämpfen. –
Warum stellen Sie nicht eine neue Frage speziell für das Problem, das Sie haben, und verlinken Sie hier von einem Kommentar, damit ich es sehe? –