我使用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);
答案 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);
}