1

很简单,我单击具有 的输入,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>

AjaxButton在 java 代码中使用一个来表示saveClientButton.

我正在覆盖onSubmit(AjaxRequestTarget, Form<?>). 我会发布整个 java 代码,但我在方法的开头有一个记录器,以查看它是否被调用:

logger.debug("ON SUBMIT");

所以它不在方法内部。有趣的是,当我重写 FormonSubmit()方法而不是 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:

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

好的,我放了一个反馈面板。它给了我以下信息:

'[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 回答
0

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

这是通过向表单对象添加“onError”方法来确定的(果然,onError 被调用了,你可以告诉“什么”错误什么样的

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

并挖掘它以查找错误消息。

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

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

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

于 2017-11-01T20:14:52.323 回答