【发布时间】:2021-04-09 03:49:01
【问题描述】:
我有一个超类 A 和一个子类 B。超类 A 有一个表单和 onSubmit 方法。我想在子类上覆盖该表单方法。如何做到这一点?
示例 A
form.add(new AjaxFormSubmitBehavior(form, "onsubmit") {
@Override
protected void onSubmit(AjaxRequestTarget target) {
super.onSubmit(target);
if (errorsList == null) errorsList = new ArrayList<>();
prepareFormValuesForSubmit();
PaymentsValidator.debtInfoIsValid(model.getObject(), errorsList);
if (!errorsList.isEmpty()) {
for (String error : errorsList)
error(error);
JavascriptUtils.showMessagesForFeedbackPanel(target, feedback);
return;
}
Long id = sendPayment(target);
getOBSession().setAttribute((Object) DebtInfoViewPage.PAGE_PARAMETER, id);
JavascriptUtils.goToPage(target, Constants.DEBTINFO_BASE_URL + "/" + DebtInfoViewPage.class.getSimpleName());
getOBSession().setSaveDoc(false);
}
在 B 上:
getPaymentForm().add(new AjaxFormSubmitBehavior(getPaymentForm(), "onSubmit") {
@Override
protected void onSubmit(AjaxRequestTarget target) {
List<String> errors = new ArrayList<>();
PaymentsValidator.auditStatementIsValid(auditorsContactModel.getObject(), errors);
if (errors.size() == 0) {
auditorsContactModel.getObject().setDebtInfoId(getDebtInfoModel().getObject().getId());
ServiceLocator.getService(DocumentService.class).persist(auditorsContactModel.getObject());
}
}
});
这种方式行不通,好像是在添加另一个onSubmit。
【问题讨论】: