1

簡単です。入力をクリックするtype="submit"と、フォームが送信されません。

この問題の解決策を検索しましたが、ネストされたフォームがあるかどうかを確認する必要があると言われていますが、使用していないのは 1 つだけです。また、タグの配置が間違っている可能性もあるとのことでしたが、HTML 全体を確認したところ、タグに問題はありませんでした。

HTMLに次のブロックがあります:

<div id="form-options-div" style="margin-top:10px;">
    <input class="btn btn-primary" type="submit" wicket:id="saveClientButton" id="save-client-button" />
    <input class="btn" type="button" id="close-client-button" wicket:id="closeClientButton"/>
</div>

AjaxButtonを表すために Java コードで を使用していsaveClientButtonます。

をオーバーライドしていonSubmit(AjaxRequestTarget, Form<?>)ます。Javaコード全体を投稿しますが、メソッドの開始時にロガーが呼び出されているかどうかを確認します:

logger.debug("ON SUBMIT");

したがって、メソッド内にはありません。onSubmit()興味深いことに、AjaxButton メソッドではなくForm メソッドをオーバーライドすると、ページが実際にリロードされます。しかし、それだけです。onSubmit メソッドはまだ呼び出されていません。

なぜこうなった?

編集:

private Button saveClientBtn;

saveClientBtn = new AjaxButton(WICKET_ID_SAVE_CLIENT_BUTTON) {

        @Override
        public void onError() {
            logger.debug("Error on submit...");
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
           //code....
        }
};

closeClientButton通常の動作を妨げている可能性はありますか? buttonボタンの種類がではなくであるため、わかりませんsubmit

editClientForm = new Form<Client>(WICKET_ID_EDIT_CLIENT_FORM);

add(editClientForm);

editClientForm.add(saveClientBtn);

編集2:

OK、AjaxButton を使用する代わりに、FormonSubmit()とをオーバーライドすることにしましたonError()。ボタンをクリックすると、それonError()が呼び出されていることがわかります。今、私はその理由を見つける必要があります。

OK、FeedbackPanel を配置しました。次のメッセージが表示されます。

'[Page class = EditClientPage, id = 6, render count = 1]' is not a valid EditClientPage.

また、エラーは次のように 4 回表示されます。

'[Page class = EditClientPage, id = 6, render count = 1]' is not a valid EditClientPage.

'[Page class = EditClientPage, id = 6, render count = 1]' is not a valid EditClientPage.

'[Page class = EditClientPage, id = 6, render count = 1]' is not a valid EditClientPage.

'[Page class = EditClientPage, id = 6, render count = 1]' is not a valid EditClientPage.

このエラーはどういう意味ですか?

4

2 に答える 2

1

フォームタグがあることを確認してください。

例えば:

<html>
  <body>
    <form wicket:id="form">
       <div wicket:id="registration">
          Display the RegistrationInputPanel
       </div>
       <input type=”submit” wicket:id="register" value="Register"/>
    </form>
 </body>
</html>

そしてJavaクラス:

public class RegistrationPage extends Page {
    public RegistrationPage(IModel<Registration> regModel) {
        Form<?> form = new Form("form");
        form.add(new RegistrationInputPanel("registration", regModel);
        form.add(new SubmitButton("register") {
            public void onSubmit() {

            }
        });
        add(form);
    }
}
于 2012-12-03T13:58:43.340 に答える