3

私は GWT が初めてで、シンプルなアプリ (fmylife の小さなバージョンなど) を作成しようとしています。これまで、ファクトをロードするコンポジットと、新しいファクトを送信するためのフォームを持つ別のコンポジットを作成しました (これには、リストをクリアして再度入力するロード メソッドがあります)。

ボタンを押すとフォーム付きのウィンドウが表示されるボタンがあります。そのフォームは、新しいファクトを追加するために使用されます。しかし、ファクトが正しく追加されたらメイン ページを更新して、このウィンドウを閉じたいと思います。

どうすればいいですか?Window フォームにある種のコールバックを渡す必要がありますか?

編集:十分に表現できませんでした。 smartGWTWindowによってDialogBox提供されます。

4

4 に答える 4

2

Events と Event Bus を見てください。

より良い説明については、このビデオもご覧ください。

于 2010-07-20T12:11:34.570 に答える
1

もちろん?DialogBox に含まれるコンポジットに onSave などのメソッドを使用してコールバックを渡します。DialogBox コンポジットが常にファクト モデルを編集し、新しいファクト モデルを作成しているか、既存のファクト モデルを編集しているかを認識しないように、フローを設計します。ユーザーがポップアップを送信したときに、DialogBox がコールバックを使用して onSave を呼び出せるようにします。

ファクト コレクション データ構造の CRUD ロジックを DialogBox コンポジットから除外します。

于 2010-07-20T04:19:01.307 に答える
0

DialogBox上記のと解決策に同意しましたPopupPanel。ただし、それでも使用したい場合Windowは、次の解決策が思い浮かびます。

Window戻したい値へのフックを拡張して提供します。次に、新しいを作成するときにCustomWindow、メソッドを呼び出して、が閉じられaddWindowCloseHandlerたときに通知を受け取ります。CusomWindowそのイベントで、必要な値を取得し、ウィンドウを閉じます。次に、非同期呼び出しを行ってメインページを更新します。

于 2010-07-19T22:08:26.217 に答える
0

DialogBox新しいウィンドウを開く代わりにorを使用する必要がありPopupPanelます (最新のブラウザのほとんどは、いずれかの方法で新しいタブを開くことを選択します)。そうすれば、ページを離れることはありません (それがこの AJAX の要点ですよね?)。新しいウィジェットをその上にオーバーレイするだけで、「送信」すると非表示/破棄され、新しいファクトが追加されます。 (ページ全体をリロードせずに)。

于 2010-07-19T22:03:26.723 に答える