我有一个带有向导组件的页面。用户可以使用 next 和 previous 按钮导航向导面板,我已执行完整(非ajax)表单提交,以便应用程序为后退按钮友好。
单击 next 按钮时,我想尝试ajax表单验证(如果启用了javascript)。我试过了:
nextButton.add( new AjaxFormValidatingBehavior( form, "onsubmit") );
添加此类验证。行为有效 - 但是,当发生验证错误时,浏览器仍会提交整个表单。
在这种情况下,阻止浏览器提交表单的Wicket方法是什么?
答案 0 :(得分:0)
覆盖表单或onError()
上的AjaxFormValidatingBehavior
方法。如果你对行为这样做,我不确定这是否会阻止表单提交。
new AjaxFormValidatingBehavior( form, "onsubmit") {
public void onSubmit() {}
public void onError() {}
}
答案 1 :(得分:0)
也许有点迟到但是答案是:
public class SomePage extends WebPage {
private FeedbackPanel feedbackMessageError = new FeedbackPanel("feedbackTabAddEmpMesError", new ExactLevelFeedbackMessageFilter(FeedbackMessage.ERROR));
public SomePage(String id) {
final Form<Void> form = new Form<>("tabFormAddEmp");
add(form);
//Name textfield cannot be empty
final FormComponent<String> tabAddEmpName = new RequiredTextField<>("tabAddEmpName", Model.of(""));
tabAddEmpName.setLabel(Model.of("Name"));
tabAddEmpName.setOutputMarkupId(true);
//Salarynumber has to be minimal 10 char long
final FormComponent<String> tabAddEmpLoon = new RequiredTextField<>("tabAddEmpLoon", Model.of(""));
tabAddEmpLoon.add(new StringValidator(10, null)).setLabel(Model.of("Salarynumber"));
tabAddEmpLoon.setOutputMarkupId(true);
final Button button = new Button("tabFormAddEmpBut");
form.add(tabAddEmpName , tabAddEmpLoon, button);
button.add(new AjaxFormValidatingBehavior(form, "onclick") {
@Override
public void onError(AjaxRequestTarget target) {
//Add feedbackpanel to your html and voila!
target.add(feedbackMessageError);
}
@Override
protected void onSubmit(AjaxRequestTarget target) {
//Do some logic over here
}
}
}
}