Wicket一个表单,带有两个提交按钮,具有相同的验证

时间:2017-11-14 10:27:33

标签: java forms validation wicket

我使用wicket 7.x.我有一个带有两个提交按钮的表单。这两个按钮在提交事件上执行不同的操作,但它们具有相同的字段验证。我在其中一个中覆盖AjaxButton onSubmit以分离不同的行为,但我无法进入相同的验证方法。

button = new AjaxButton("id",this.getRootForm()) {
    @Override
    protected void onSubmit(AjaxRequestTarget target, Form<?> form){...}
}
button.setDefaultFormProcessing(false);

@Override
protected void onValidate() {...}

@Override
protected void onSubmit() {...}

我怎样才能通过与表格相同的验证方法?

已编辑的答案

this.getRootForm().add(new IFormValidator() {

     @Override
     public void validate(Form<?> form) {
           doValidate(form);
     }
     @Override
     public FormComponent<?>[] getDependentFormComponents() {
         FormComponent<?>[] c = new FormComponent<?>[6];
         c[0] = nome;
         c[1] = email;
         c[2] = cognome;
         c[3] = indirizzo;
         c[4] = telefono;
         c[5] = captcha;
         return c;
      }
});

protected void doValidate(Form<?> form) {...}

button = new AjaxButton("id",this.getRootForm()) {
    @Override
    protected void onSubmit(AjaxRequestTarget target, Form<?> form){
        doValidate(form);
        if (!form.hasError()) {
            ...
        } else{
            target.add(feedbackPanel);
        }
    }
}
button.setDefaultFormProcessing(false);

2 个答案:

答案 0 :(得分:1)

您应该实施Application.Current.Resuming += new EventHandler<Object>(App_Resuming); IValidator并在所有IFormValidator中使用它。

请参阅https://ci.apache.org/projects/wicket/guide/8.x/single.html#_form_validation_and_feedback_messages

<强>更新

Form

答案 1 :(得分:1)

您可以添加自己的IFormValidator来形成和调用您的代码。

制作自己的验证方法。

void doValidate(Form<?> form) {
   your validation code here for form.
}

this.getRootForm().add(new IFormValidator() {

    void validate(Form<?> form) {
        doValidate(form);
    }
});

@Override
protected void onValidate() {
   doValidate(this);
}