MVPでGWT2.4を使用しています。これが私のビューオブジェクトです:
public class LoginWidget extends Composite implements LoginWidgetView {
interface Binder extends UiBinder<Widget, LoginWidget> {
}
private static final Binder BINDER = GWT.create(Binder.class);
@UiField Anchor settings;
public LoginWidget() {
initWidget(BINDER.createAndBindUi(this));
}
@UiHandler("settings")
void handleSettingsClick(ClickEvent e) {
presenter.showSettings();
}
private Presenter presenter;
@Override
public void setPresenter(Presenter presenter) {
this.presenter = presenter;
}
}
ビューのプレゼンターを
...
getLoginWidget().setPresenter(new LoginWidgetPresenter(placeController));
LoginWidgetPresenterはもちろん、ビューのプレゼンターインターフェイスを実装します。しかし、設定アンカーをクリックすると、プレゼンター参照はまだnullであるため、presenter.showSettings()はNullPointerExceptionをスローします。LoginWidgetのコンストラクターを呼び出し、ウィジェットを初期化した後、
initWidget(BINDER.createAndBindUi(this));
@UiHandler( "settings")メソッドのクリック処理コードは、プレゼンターオブジェクトなどの使用済みオブジェクトへの変更を無視しますか?initWidget()メソッドを呼び出した後にプレゼンターオブジェクトを設定する方法はありますか?または、@ UiHandler / initWidget()をカスタマイズすることは可能ですか?後でプレゼンターを設定できる動作ですか?
ありがとう、マヌエル