在wicket 1.4中我用來清除由特定形式的onValidate()方法引起的錯誤。在遷移到wicket之後不幸的是,6個方法執行順序改變了,或者我的代碼寫得不好。所以我有AJAX按鈕,與此類似:如何清除由onValidate()引起的類(表單)相關的錯誤?
final AjaxFallbackButton submitButton = new AjaxFallbackButton(PREFIX + ".submit", new I18nModel(title), panelForm) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
// submit method
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
addPanel.setProcessingEnabled(true);
}
};
submitButton.add(new AjaxFormSubmitBehavior(panelForm, "onclick"){
@Override
protected void onEvent(AjaxRequestTarget target) {
addPanel.setProcessingEnabled(false);
super.onEvent(target);
}
});
的addPanel
在類指向包含表單,我想清楚了錯誤。因此,在這個班我加入的形式是這樣的:
panelForm = new Form<B>("panelForm", new PrefixedCompoundModel<B>(getDefaultModelObject(), PREFIX)) {
@Override
protected void onValidate() {
super.onValidate();
if (!processingEnabled) {
Session.get().getFeedbackMessages().clear(new ContainerFeedbackMessageFilter(this));
}
}
@Override
protected void onError() {
UiUtils.refresh(panelForm);
}
};
變量processingEnabled
默認爲true。我只是在上面點擊ajax按鈕時才改變它。它習慣先去我的行爲,然後再去上面的表單中的onValidate。現在它是:onValidate -> onError(panelForm) -> behavior -> onValidate -> onError(panelForm) -> onError(button)
。我想在onValidate
之前傳遞processingEnabled參數或在onError方法中清除與此表單有關的所有錯誤。感謝您的反饋。