Apache Wicket - 表单未提交

时间:2012-11-29 20:38:01

标签: java html forms apache wicket

很简单,我点击了包含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()方法而不是AjaxButton方法时,页面实际上会重新加载。但仅此而已,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:

好的,我决定覆盖表单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.

这个错误意味着什么?

2 个答案:

答案 0 :(得分:1)

确保您有表单标记。

e.g:

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

答案 1 :(得分:0)

在我的情况下,似乎我没有设置&#34;必需&#34;表格中的价值。

通过添加&#34; onError&#34;确定了这一点。表单对象的方法(当然,正在调用onError,你可以告诉&#34;什么&#34;错误was喜欢

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

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

实际设置值,就我而言,是

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

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