3

プロジェクト内でGWTのエディターフレームワークを使用したいと思います。

ビュー(エディターを実装)には、UiBinderフィールドがあります。

@UiField
TextBox text;

私のプレゼンターでは、GINを介してドライバーインスタンスを注入します。

@Inject
public AppointmentPopupPresenter(EventBus eventBus, MyView view, final AppointmentDriver appointmentDriver)

プレゼンターが呼び出されたら、次のコマンドでドライバーを初期化しようとします。

this.appointmentDriver.initialize(getView());
this.appointmentDriver.edit(new Appointment());

GINModule:

 bind(SimpleBeanEditorDriver.class).to(AppointmentDriver.class);

AppointmentDriverインターフェイス:

public interface AppointmentDriver extends SimpleBeanEditorDriver<Appointment, AppointmentPopupPresenter.MyView>{

}

後で私が呼び出すボタンイベントを聞くとき:

appointmentDriver.flush();

ただし、すべてのプロパティはnullであり、エラーメッセージはスローされません。デバッガーをテキストボックスウィジェットで調べると、「editor」のインスタンスもnullになっています。インターナを知らないが、多分これはあなたのためのヒントです。

予定POJO(もちろんvoid setText(String text)/ String getText()):

 String text;

現時点では私は完全に立ち往生しているので、どんな助けでも大歓迎です。

ありがとうございました!!

4

2 に答える 2

1

getView()コンストラクターに渡されたものと同じビューを返し、UIに表示されたものと同じビューを返しますか?ドライバーが実際に表示されているものとは異なるビューで初期化されている可能性があるため、誤ったビューからデータを取得します。なぜバインドするのかも分かりませんが、不要そうですか?

于 2011-08-02T12:57:41.693 に答える
0

よくわかりませんが、問題はあなたが電話をかけているだけだと思います SimpleBeanEditorDriver.initialize(E editor)。私が覚えている限り、あなたは電話する必要がありますRequestFactoryEditorDriver.initialize(EventBus, RequestFactory, E)

たぶん私の小さな(現在GWT 2.3用に更新されていますが、まだ完全に洗練されていない)サンプルプロジェクトがあなたを助けることができます。

これが私が初期化呼び出しを行うスニペットです:

    final MyRequestFactory requestFactory = GWT
            .create(MyRequestFactory.class);
    requestFactory.initialize(eventBus);

    final MyEditor myEditor = new MyEditor();
    driver.initialize(eventBus, requestFactory, myEditor);

GINを使用するようにプロジェクトをリファクタリングできるはずです。

于 2011-08-02T11:21:56.793 に答える