当Wicket AjaxFormValidatingBehaviour验证失败时,阻止浏览器表单提交

时间:2010-04-20 22:20:27

标签: java wicket

我有一个带有向导组件的页面。用户可以使用 next previous 按钮导航向导面板,我已执行完整(非ajax)表单提交,以便应用程序为后退按钮友好。

单击 next 按钮时,我想尝试ajax表单验证(如果启用了javascript)。我试过了:

nextButton.add( new AjaxFormValidatingBehavior( form, "onsubmit") );

添加此类验证。行为有效 - 但是,当发生验证错误时,浏览器仍会提交整个表单。

在这种情况下,阻止浏览器提交表单的Wicket方法是什么?

2 个答案:

答案 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
        }

      }

   }
}