Frage

Ich versuche, eine GWT-Ansicht mit seiner Präsentationsschicht zu binden, aber es scheint nicht, etwas zu tun.

Es ist ein Frühlings-Roo GWT erzeugte Projekt und ich versuche, das Gerüst so weit wie möglich gegeben zu verwenden. Die Ansicht ist eine einfache Schaltfläche (R.ui.xml) und der Rest der Ansicht in R.java definiert ist:

public class R extends Composite implements RPresenter.Display {

    interface MyUiBinder extends UiBinder<Widget, R> {}
    private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);

    @UiField Button myButton;

    private ClickHandler buttonClickHandler = null;

    public R(){
        initWidget(uiBinder.createAndBindUi(this));
    }

    @UiHandler("myButton")
    void onButtonClick(ClickEvent event){
        GWT.log('Button clicked');
        if (buttonClickHandler != null){    
            GWT.log("buttonClickHandler event triggered");
            buttonClickHandler.onClick(event);
        }
    }

    @Override
    public void setButtonClickHandler(ClickHandler buttonClickHandler) {

        GWT.log("setButtonClickHandler");
        this.buttonClickHandler = buttonClickHandler;
    }

}

Der Moderator:

public class RPresenter {

    public interface Display extends IsWidget {
        void setButtonClickHandler(ClickHandler buttonClickHandler);
    }

    private final Display display;
    private final EventBus eventBus;

    @Inject
    public RPresenter(EventBus eventBus, Display display){
        this.display = display;
        this.eventBus = eventBus;
        bind();
    }

    private void bind(){
        display.setButtonClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                GWT.log("onClick event triggered");
            }
        });
    }

    public void go(HasWidgets container){
        container.add(display.asWidget());
    }

}

Und für meinen GIN Modul verwende ich das erzeugte ScaffoldModule im ... client.scaffold.ioc Paket:

public class ScaffoldModule extends AbstractGinModule {

    @Override
    protected void configure() {

        GWT.log("ScaffoldModule configure");

        bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
        bind(ApplicationRequestFactory.class).toProvider(RequestFactoryProvider.class).in(Singleton.class);
        bind(PlaceController.class).toProvider(PlaceControllerProvider.class).in(Singleton.class);

        //bind(RPresenter.Display.class).to(R.class).in(Singleton.class);
        bind(RPresenter.Display.class).to(R.class);
    }

    static class PlaceControllerProvider implements Provider<PlaceController> {

        private final EventBus eventBus;

        @Inject
        public PlaceControllerProvider(EventBus eventBus) {
            this.eventBus = eventBus;
        }

        public PlaceController get() {
            return new PlaceController(eventBus);
        }
    }

    static class RequestFactoryProvider implements Provider<ApplicationRequestFactory> {

        private final EventBus eventBus;

        @Inject
        public RequestFactoryProvider(EventBus eventBus) {
            this.eventBus = eventBus;
        }

        public ApplicationRequestFactory get() {
            ApplicationRequestFactory requestFactory = GWT.create(ApplicationRequestFactory.class);
            requestFactory.initialize(eventBus);
            return requestFactory;
        }
    }
}

Bei der Entwicklung Modus Konsole GWT, die „ScaffoldModule configure“ niemals angezeigt, aber das erzeugte Gerüst scheint Bindung gerade fein wie die Ereignisse entlang von Bauteil zu Bauteil ohne Probleme übergeben bekommen, es sei denn, die Bindung ist magisch woanders passiert, und das heißt toter Code.

Wenn ich meine binden setzen (RPresenter.Display.class) .to (R.class) in, es scheint nicht die Bindung zu tun. Der einzige Ausgang I in der GWT-Konsole erhalten ist „Button geklickt“, die in der Ansicht und dann nichts weiter genannt wird. Ich bin etwas klar fehlt, irgendwelche Ideen?

War es hilfreich?

Lösung

Der Aufruf von GWT.log () wird nicht ausgegeben, alles von einer AbstractGinModule - Klassen, die AbstractGinModule (ScaffoldModule in Ihrer Situation) erstrecken, wird durch Gin

scroll top