2011-08-01 20 views
3

プロジェクト内でGWTのエディタフレームワークを使用したいと思います。私の見解ではエディタのフィールドが更新されない

(エディタを実装している)私は私のUiBinderサンプルメッセージフィールドを持っている:私はGIN介してドライバインスタンスを注入し、私のプレゼンターで

@UiField 
TextBox text; 

プレゼンターは私がしようと呼ばれている
@Inject 
public AppointmentPopupPresenter(EventBus eventBus, MyView view, final AppointmentDriver appointmentDriver) 

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

GINModule:

0123でドライバを初期化します
bind(SimpleBeanEditorDriver.class).to(AppointmentDriver.class); 

AppointmentDriverインタフェース:

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

}その後

私は私が呼ぶボタンイベントに耳を傾ける:

appointmentDriver.flush(); 

が、すべてのプロパティがnullであり、何のエラーMSGがスローされません。テキストボックスウィジェットにデバッガを見ると、 "editor"のインスタンスもnullになります。インターナショナルは知りませんが、これはヒントです。

(無効のsetText(String型のテキスト)/文字列のgetText()と当然の)任命POJO:私は完全に任意のヘルプは大歓迎以上のものですので、立ち往生しています現時点では

String text; 

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

答えて

1

getView()を参照してください。コンストラクタに渡されたものと同じビューを返しますが、それはuiに表示されているものと同じですか?ドライバが実際に表示されたビューとは異なるビューで初期化されている可能性があります。したがって、不正なビューからデータを取得します。私もあなたがバインドを行う理由を理解していない、それは不要ですか?

+0

はい私はデバッガとその正しいビューを見ました。私の代わりにビュー インターフェイスの明示的な観点をここで私のドライバを変更 場合: SimpleBeanEditorDriver <アポイントメント、AppointmentPopupView> {} とdriver.initialize((AppointmentPopupView)getViewメソッドを())延びAppointmentDriver パブリックインターフェース。 その作業。なぜ私は本当に知りませんし、私はちょっと感じています 私の発表者のキャストと不快です。なぜバインドが不要なのですか?後でそれを挿入する必要があると思いますか? – Gambo

+0

私はそれが何であるか知っていると思います。ドライバは 'MyView'ではなく' AppointmentPopupView'引数で拡張する必要があります。これらの引数に基づいて、GWTはドライバコードを生成するので、 'AppointmentPopupView'は' Editor'を実装しなければなりません。GWTが動作するためエディタコードを含む各クラスのインタフェースが必要です。 –

+0

バインドについて。私はGINに慣れていませんが、あなたが使っているように、それは 'SimpleBeanEditorDriver'が引数として使用されるときに' AppointmentDriver'が注入されることを意味します。しかしあなたのコードでは 'SimpleBeanEditorDriver'ではなく' AppointmentDriver'を直接使用していますので、GINインジェクトは 'AppointmentDriver'を使わず、バインドする必要はありません。 –

0

わかりませんが、私は問題は、あなたがちょうどSimpleBeanEditorDriver.initialize(E editor)と呼んでいると仮定しています。私が覚えている限りでは、あなたはあなたを助けることができます(完全に研磨されていない、まだ今GWT 2.3用の更新、しかし)RequestFactoryEditorDriver.initialize(EventBus, RequestFactory, E)

たぶん私の小さな

example projectを呼び出す必要があります。

ここで私は初期の呼び出しにするスニペットです:GINを使用するプロジェクトをリファクタリングすることが可能です

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

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

が。

+0

あなたの助けてくれてありがとう、悲しいことに、私はjson/restサービスを構築しているので、RequestFactoryを使用していないので、エディタだけが必要です。とにかく私はあなたのプロジェクトを見ていきます! – Gambo

関連する問題