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我没有添加反馈面板。