0

簡単なものが欠けているに違いありませんが、行き詰まっています。Firebugによると、リクエストを送信するフォームパネルをgwtで作成しました。firebug から requestlink をコピーし、ブラウザ ウィンドウでネイティブに試したので、リンクは機能します。はい、クライアントとサーバーのホストは同じです --> localhost. しかし、答えは gwt には届きません。クライアントブラウザでさえありません-firebugは結果エイターを表示しません。

これは私の小さなフォームです:

    Button form = new Button ("SendForm", new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            logger.log(Level.FINER, "Creating SubmitForm...");

            TextBox cmd = new TextBox();
            cmd.setName("cmd");
            cmd.setText("GetMenuitemList");

            Button sendbutton = new Button("Senden");
            logger.log(Level.FINEST, "Creating grid...");
            Grid grid = new Grid(1, 2);
            grid.setWidget(0, 0, new  Label("Command"));
            grid.setWidget(0, 1, cmd);

            VerticalPanel vPan = new VerticalPanel();
            //vPan.add(grid);
            vPan.add(sendbutton);

            logger.log(Level.FINEST, "Creating FormPanel...");
            final FormPanel formPan = new FormPanel();
            formPan.setMethod(FormPanel.METHOD_POST);
            formPan.setAction(RequestHelper.getLink("Menu.php"));

            logger.log(Level.FINEST, "Binding Send button...");
            logger.log(Level.FINEST, "Binding SubmitHandler...");
            formPan.addSubmitHandler(new SubmitHandler() {

                @Override
                public void onSubmit(SubmitEvent event) {
                    OptionPane.showMessageDialog("Form submit", event.toDebugString(), MessageType.INFO, true);
                }
            });

            logger.log(Level.FINEST, "Binding SubmitCompleteHandler...");
            formPan.addSubmitCompleteHandler(new SubmitCompleteHandler() {

                @Override
                public void onSubmitComplete(SubmitCompleteEvent event) {
                    OptionPane.showMessageDialog("Form SubmitComplete", event.toDebugString(), MessageType.INFO, true);
                }
            });

            logger.log(Level.FINEST, "Adding grid to formpan...");
            formPan.add(grid);
            formPan.add(vPan);

            logger.log(Level.FINEST, "Creating DialogBox...");
            final DialogBox box = OptionPane.createClosableBox("TestForm", true);

            sendbutton.addClickHandler(new ClickHandler() {

                @Override
                public void onClick(ClickEvent event) {
                    formPan.submit();
                    box.hide();
                }
            });

            box.add(formPan);
            box.center();
        }
    });

予想される答えは次のようになります。

{"sessionid":"6dbqibo25e0bn46fldqh37psj5","data":[{"title":"Start","Controller":"Start","Action":"Index","tooltip":"Startseite, Begr\u00fc\u00dfung","prefetch":"1"},{"title":"Register","Controller":"Person","Action":"Index","tooltip":"Neue Benutzer registrieren","prefetch":"0"},{"title":"Daten","Controller":"Contact","Action":"Index","tooltip":"Die eigenen Daten bearbeiten","prefetch":"1"},{"title":"Teilnehmerlisten","Controller":"Lists","Action":"Index","tooltip":"Listen der registrierten Benutzer","prefetch":"0"},{"title":"Suche","Controller":"Search","Action":"Index","tooltip":"Namenssuche nach Benutzer mit Kontaktm\u00f6glichkeit","prefetch":"1"},{"title":"Kalender","Controller":"Calendar","Action":"Index","tooltip":"Termine","prefetch":"1"},{"title":"Newsletter","Controller":"Newsletter","Action":"Index","tooltip":"Verschicken von Newslettern","prefetch":"1"},{"title":"Wettk\u00e4mpfer","Controller":"Competitor","Action":"Index","tooltip":"Zugriff auf Wettk\u00e4mpfer","prefetch":"1"},{"title":"Upload","Controller":"Upload","Action":"Index","tooltip":"Bilder, Videos o.\u00e4. hochladen","prefetch":"0"},{"title":"Administration","Controller":"Admin","Action":"Index","tooltip":"Datenbankfunktionen und Benutzerrechte","prefetch":"1"}]}

それで、ここで何がうまくいかないのですか?

ところで、この手法をログイン フォームに使用します。RequestBuilder を使用するよりも、フォームでこれを行う方が良いと読みました (これは既に機能しています)。ファイルのアップロードは後で行うため、フォームの質問にはいずれにしても回答が必要です...

前もって感謝します。マーカス

編集: OK、Chromium、Konqueror、Opera でもテストしました - コードは動作します。ただのファイアフォックスです。Firefox でそれを実現するためのアイデアはありますか? 私はEclipseとgwtのまったくの初心者です...多分いくつかのコンパイラオプションですか?

4

1 に答える 1

0

私は自分で問題を見つけて解決しました。form.submit が実行された後、フォーム Panel を非表示にしました。javadocが言うように、それは許可されていません:

送信が完了するまで、FormPanel を切り離してはなりません (つまり、親から削除したり、RootPanel から切り離したりしてはなりません)。そうしないと、送信の通知が失敗します。

于 2013-03-27T14:44:15.853 に答える