我有一个包含validations(setrequired(true))
字段的表单。
我还有两个按钮提交和取消。我希望验证显示在提交上,不应在取消时显示验证。我使用setDefaultFormProcessing(false)
取消按钮。然后它不检查验证但显示验证消息。请建议我如何停止显示这些。
感谢,
private void initForm() {
final DateTextField rescheduledTdDate = new DateTextField( "rescheduledTdDate");
rescheduledTdDate.add(DateValidator.minimum(calendar.getTime())).setRequired(true);
add(rescheduledTdDate);
final TextField rescheduledTdTime= new TextField("rescheduledTdTime");
rescheduledTdTime.setRequired(true);
add(rescheduledTdTime);
// submit button
AjaxButton ajaxButton = new AjaxButton("submitButton") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
super.onSubmit(target, form);
populateUpdateResult();
info("Customer Saved successfully!");
target.add(feedback);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
error("Save failed, retry after sometime");
target.add(feedback);
}
};
add(ajaxButton);
// cancel button and action
AjaxButton ajaxButton2 = new AjaxButton("cancelButton") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
super.onSubmit(target, form);
populateUpdateCancel();
info("Customer Saved successfully!");
target.add(feedback);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
error("Save failed, retry after sometime");
target.add(feedback);
}
};
ajaxButton2.setDefaultFormProcessing(false);
add(ajaxButton2);
}
答案 0 :(得分:0)
以下示例代码(类似于您的方案)正常工作。请注意取消onSubmit中的setResponsePage(TestPage3.class)(重新加载页面)。
爪哇:
public class TestPage3 extends WebPage {
FeedbackPanel feedbackPanel;
public TestPage3(final PageParameters parameters) {
feedbackPanel = new FeedbackPanel("feedback");
feedbackPanel.setOutputMarkupId(true);
add(feedbackPanel);
Form<Void> form = new Form<Void>("form");
add(form);
addFormComponents(form);
}
private void addFormComponents(Form<Void> form) {
addNameText(form);
addSubmitButton(form);
addCancelButton(form);
}
private void addCancelButton(final Form<Void> form) {
AjaxButton cancelBtn = new AjaxButton("cancelBtn") {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
super.onSubmit(target, form);
setResponsePage(TestPage3.class);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
feedbackPanel.error("Validation failed...");
target.add(feedbackPanel);
}
};
cancelBtn.setOutputMarkupId(true);
cancelBtn.setDefaultFormProcessing(false);
form.add(cancelBtn);
}
private void addSubmitButton(final Form<Void> form) {
AjaxButton submitBtn = new AjaxButton("submitBtn") {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
super.onSubmit(target, form);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
feedbackPanel.error("Validation failed...");
target.add(feedbackPanel);
}
};
form.add(submitBtn);
}
private void addNameText(Form<Void> form) {
TextField<String> text = new TextField<String>("nameTxt");
text.setOutputMarkupId(true);
text.setRequired(true);
form.add(text);
}
}
标记:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:wicket>
<head>
</head>
<body>
<div wicket:id="feedback"></div>
<form wicket:id="form">
<input type="text" wicket:id="nameTxt"/>
<input type="submit" wicket:id="submitBtn" value="Submit"/>
<input type="submit" wicket:id="cancelBtn" value="Cancel"/>
</form>
</body>
</html>