私はwicket 7.xを使用します。私は2つの送信ボタンを持つフォームを持っています。 2つのボタンは、送信イベントでは異なる動作を行いますが、同じフィールド検証があります。 AjaxButton onSubmitをオーバーライドして別の動作を分離していますが、同じ検証メソッドに渡すことはできませんでした。Wicket同じフォームで2つの提出ボタンがある
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() {...}
フォームと同じ検証方法をどのように通過できますか?
あなたはIValidator
またはIFormValidator
を実装し、すべてのあなたのForm
秒でそれを使用する必要があります
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);
wicket 1.7はありません。万が一改札7.Xを意味するのですか?また、 'onValidate()'メソッド(オーバーライドしない)を使用しないことをお勧めします。あなたのコンポーネントとフォームにValidatorを追加するだけです。あなたがボタンではないと明示的に指示しない限り、SubmitButtonはデフォルトでそのvalidaitonをトリガーします。参照してください:https://ci.apache.org/projects/wicket/guide/6.x/guide/forms2.html#forms2_2 –