Запретить отправку формы в браузере при сбое проверки Wicket AjaxFormValidatingBehaviour - PullRequest
4 голосов
/ 21 апреля 2010

У меня есть страница с компонентом мастера. Пользователь может перемещаться по панелям мастера, используя кнопки next и previous , которые я выполняю при отправке полных (не ajax) форм, чтобы приложение было удобным при нажатии на кнопку назад.

Когда нажата кнопка next , я хотел бы попытаться проверить форму ajax (если включен javascript). Я пытался сделать:

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

чтобы добавить такую ​​проверку. Поведение работает - однако, когда ошибки проверки происходят, браузер все еще передает всю форму.

Каким образом Wicket запрещает браузеру отправлять форму в этом случае?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2015

Может быть немного поздно, но вот ответ:

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
        }

      }

   }
}
0 голосов
/ 21 апреля 2010

Переопределите метод onError() в форме или AjaxFormValidatingBehavior. Если вы сделаете это по поведению, я не уверен, помешает ли это отправке формы.

new AjaxFormValidatingBehavior( form, "onsubmit") {
   public void onSubmit() {}
   public void onError() {}
}
...