未提交java 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");
所以它不在方法内部。有趣的是,当我重写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,而是决定重写形式onSubmit()
和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.
这个错误意味着什么
# 1 楼答案
确保你有一个表单标签
例如:
java类:
# 2 楼答案
在我的例子中,似乎我没有在表单中设置“必需”值
这是通过向表单对象添加一个“onError”方法来确定的(果然,调用了onError,您可以知道错误是什么样子的)
String responseTxt = wicketTester.getLastResponse().getDocument();
然后通过它查找错误消息
在我的例子中,实际设置值是
然后
onSubmit
方法开始在测试中被调用,正如预期的那样