Java Apache Wicket-未提交表单

Java Apache Wicket-未提交表单,java,html,forms,apache,wicket,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="

简单地说,我单击包含
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>
closeClientButton
是否会干扰正常行为?我不知道,因为按钮类型是
按钮
,而不是
提交

editClientForm=新表单(WICKET\u ID\u EDIT\u CLIENT\u表单)

add(editClientForm)

editClientForm.add(saveClientBtn)

编辑2:

好的,我决定重写表单
onSubmit()
onError()
,而不是使用AjaxButton。单击按钮时,我看到调用了
onError()
。现在我需要找到原因

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

“[Page class=EditClientPage,id=6,呈现计数=1]”不是有效的EditClientPage。

此外,该错误还会出现4次,如下所示:

“[Page class=EditClientPage,id=6,呈现计数=1]”不是有效的EditClientPage。

“[Page class=EditClientPage,id=6,呈现计数=1]”不是有效的EditClientPage。

“[Page class=EditClientPage,id=6,呈现计数=1]”不是有效的EditClientPage。

“[Page class=EditClientPage,id=6,呈现计数=1]”不是有效的EditClientPage。


此错误是什么意思?

请确保您有表单标记

e、 g:


显示“注册”面板
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);
    }
}
公共类注册页面扩展页面{
公共注册页面(IModel regModel){
表格=新表格(“表格”);
添加表格(新的注册输入面板(“注册”,regModel);
表格添加(新提交按钮(“注册”){
提交时公共无效(){
}
});
添加(表格);
}
}

确保您有表单标签

e、 g:


显示“注册”面板
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);
    }
}
公共类注册页面扩展页面{
公共注册页面(IModel regModel){
表格=新表格(“表格”);
添加表格(新的注册输入面板(“注册”,regModel);
表格添加(新提交按钮(“注册”){
提交时公共无效(){
}
});
添加(表格);
}
}

在我的例子中,似乎我没有在表单中设置“必需”值

这是通过向表单对象添加一个“onError”方法来确定的(果然,调用了onError,您可以知道错误是什么样子的)

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

然后通过它查找错误消息

在我的例子中,实际设置值是

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

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

在我的情况下,似乎我没有在表单中设置“必需”值

这是通过向表单对象添加一个“onError”方法来确定的(果然,调用了onError,您可以知道错误是什么样子的)

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

然后通过它查找错误消息

在我的例子中,实际设置值是

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

然后,测试中开始调用
onSubmit
方法,这是意料之中的。

您是否覆盖了按钮上的onError()以查看是否达到了它?顺便说一句,Wicket处理嵌套表单(HTML中不允许这样做)通过用div替换内部表单。@bert我尝试重写并放置一个日志…但它没有被调用。我也仔细检查了,没有嵌套表单。我对这个问题非常着迷…我希望这不是什么愚蠢的事情,我就是看不见。你添加了反馈面板吗?除非你将标记嵌入
标记中,否则Wicket无法提交表单。@svenmeier我没有添加反馈面板。您是否覆盖了按钮上的onError()以查看是否达到了它?顺便说一句,Wicket处理嵌套表单(HTML中不允许这样做)通过用div替换内部表单。@bert我尝试重写并放置一个日志…但它没有被调用。我也仔细检查了,没有嵌套表单。我对这个问题非常着迷…我希望这不是什么愚蠢的事情,我就是看不见。你添加了反馈面板吗?除非你将标记嵌入
标记中,否则Wicket无法提交表单。@svenmeier我没有添加反馈面板。