プロジェクト内で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;
。
ありがとうございました!
はい私はデバッガとその正しいビューを見ました。私の代わりにビュー インターフェイスの明示的な観点をここで私のドライバを変更 場合: SimpleBeanEditorDriver <アポイントメント、AppointmentPopupView> {} とdriver.initialize((AppointmentPopupView)getViewメソッドを())延びAppointmentDriver パブリックインターフェース。 その作業。なぜ私は本当に知りませんし、私はちょっと感じています 私の発表者のキャストと不快です。なぜバインドが不要なのですか?後でそれを挿入する必要があると思いますか? – Gambo
私はそれが何であるか知っていると思います。ドライバは 'MyView'ではなく' AppointmentPopupView'引数で拡張する必要があります。これらの引数に基づいて、GWTはドライバコードを生成するので、 'AppointmentPopupView'は' Editor'を実装しなければなりません。GWTが動作するためエディタコードを含む各クラスのインタフェースが必要です。 –
バインドについて。私はGINに慣れていませんが、あなたが使っているように、それは 'SimpleBeanEditorDriver'が引数として使用されるときに' AppointmentDriver'が注入されることを意味します。しかしあなたのコードでは 'SimpleBeanEditorDriver'ではなく' AppointmentDriver'を直接使用していますので、GINインジェクトは 'AppointmentDriver'を使わず、バインドする必要はありません。 –