1

データベースを呼び出しています。結果はサブビット フォームに使用する必要があります。だからDBからの結果が来るまで待ちたい。そのためには、同期が必要です。私の考えは、java.lang の Object.notifyAll() を使用することでしたが、GWT はこれをサポートしていません。notifyAll() の GWT に同等のメソッドはありますか?

edit1 : gxt FormPanel を使用してデータを送信しています。ボタンバーのタイプを変更できますが、 addSubmitCompleteHandler では問題は解決しないと思います。

ここにいくつかのコードスニペットがあります:

final Button submit = new Button("Submit");
submit.addListener(Events.OnClick, new Listener<ButtonEvent>() {
    @Override
    public void handleEvent(ButtonEvent be) {
        // 1. Get the data from Database (here i must wait for the response from DB)
        // 2. Submit the form               
    }
);

final FormPanel buttonBar = new FormPanel();
buttonBar.addStyleName("abUploadField");
buttonBar.setHeaderVisible(false);
buttonBar.setBorders(false);
buttonBar.setStyleAttribute("margin", "0px");
buttonBar.setEncoding(FormPanel.Encoding.MULTIPART);
buttonBar.setMethod(FormPanel.Method.POST);
buttonBar.add(file);
buttonBar.add(submit);
buttonBar.setAction("myURL");

edit2 : DB からシーケンス ID を取得したい (これは、イベント ハンドラーのステップ 1 です)。この ID は送信に使用されます。送信時に、DB のいくつかのテーブルにデータを入力しています。ID は、どのユーザーが送信を開始したかを識別するために使用され、このユーザーに対して、「送信が成功しました」というメッセージを含むダイアログを表示したいと考えています。私が言いたいことを理解していただければ幸いです:) (申し訳ありませんが、私の英語は苦手です)

4

2 に答える 2

2

あなたが言ったように、GWTはをサポートしていません Object.notifyAll()。ただしFormPanel、値の送信に使用しているaddSubmitCompleteHandler場合は、結果が戻ってきたときに通知を受け取ることができます。使用している場合も同じですRequestBuilder-RequestCallbackリクエストへの応答を受信したときに起動されるaを指定します。

于 2010-09-22T13:02:14.907 に答える
0

この問題の解決策は、送信リスナー (Events.Submit) を追加することです。これは、gwt フォーム パネルの addSubmitCompleteHandler と同じです。

于 2010-09-22T16:38:48.977 に答える