Apache Wicket - 表单未提交

问题描述 投票:1回答:2

很简单,我点击有type="submit"的输入,表单未提交。

我已经搜索了这个问题的解决方案,但他们说我应该检查我是否有嵌套表单,我没有,我只使用一个。他们还说它可能是一些错位的标签,但我已经浏览了整个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>

我在java代码中使用AjaxButton来表示saveClientButton

我压倒了onSubmit(AjaxRequestTarget, Form<?>)。我会发布整个java代码,但我在方法的开头有一个记录器,看看它是否被调用:

logger.debug("ON SUBMIT");

所以它不在方法内部。有趣的是,当我覆盖Form onSubmit()方法而不是AjaxButi方法时,页面实际上会重新加载。但仅此而已,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:

好吧,我决定覆盖Form onSubmit()onError(),而不是使用AjaxButton。单击按钮时,我看到onError()被调用。现在我需要找到原因。

好的,我放了一个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.

这个错误意味着什么?

java html forms apache wicket
2个回答
1
投票

确保您有表单标记。

e.f.:

<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);
    }
}

0
投票

就我而言,似乎我没有在表单中设置“必需”值。

这是通过向表单对象添加“onError”方法来确定的(当然,正在调用onError,你可以告诉“什么”错误was喜欢

String responseTxt = wicketTester.getLastResponse().getDocument();

并深入研究以查找错误消息。

实际设置值,在我的情况下,是

FormTester formTester = wicketTester.newFormTester("formName");
formTester.setValue("requiredElementName", "value");

然后正如预期的那样,onSubmit方法开始在测试中被调用。

© www.soinside.com 2019 - 2024. All rights reserved.