в следующем посте, вероятно, ответ на мой вопрос, но я его не вижу: Придерживайтесь универсального ErrorHandler.js, позволяя настраивать обработку сообщений об ошибках для каждого запроса и не иметь двойных окон сообщений
Я расширяю стандартное приложение Fiori (MyProfile, чтобы быть конкретным), и поэтому все работает нормально.Теперь клиент хочет показать специальные сообщения об ошибках в зависимости от технического сообщения, отправленного со шлюза.Поэтому я попытался расширить ErrorHandler в Component.js :
jQuery.sap.declare("com.company.hcm.fab.myprofile.ext.Component");
jQuery.sap.require("com.company.hcm.fab.myprofile.ext.controller.ErrorHandler");
sap.ui.component.load({
name: "hcm.fab.myprofile",
url: "/sap/bc/ui5_ui5/sap/hcmfab_prfl_mon"
});
this.hcm.fab.myprofile.Component.extend("com.company.hcm.fab.myprofile.ext.Component", {
metadata: {
manifest: "json"
},
init: function() {
hcm.fab.myprofile.Component.prototype.init.apply(this, arguments);
this._oErrorHandler = new com.company.hcm.fab.myprofile.ext.controller.ErrorHandler(this);
}
});
И я расширил ErrorHandler.js так, как я понял из показанногоpost:
sap.ui.define([
"hcm/fab/myprofile/controller/ErrorHandler",
"sap/m/MessageBox"
], function(ErrorHandler, MessageBox) {
"use strict";
return ErrorHandler.extend("com.company.hcm.fab.myprofile.ext.controller.ErrorHandler", {
constructor: function (oComponent) {
this._oResourceBundle = oComponent.getModel("i18n").getResourceBundle();
this._oComponent = oComponent;
this._oModel = oComponent.getModel();
this._sErrorText = this._oResourceBundle.getText("errorTitle");
this._oModel.attachRequestFailed(this._requestFailedHandler, this);
},
_requestFailedHandler: function(oEvent) {
var oParameters = oEvent.getParameters();
console.log("now?", oResponse);
this._showServiceError(oParameters.response);
}
});
});
Тем не менее, я не только вижу свое сообщение, но и вижу сообщение от ErrorHandler в стандартном приложении.У кого-нибудь есть идея?
С уважением, Марко
Обновление Чтобы прояснить мои идеи: В исходном приложении, которое я расширяю, ErrorHandler инициализируется вINIT-метод.Поэтому, если я правильно понял, мне придется либо полностью переписать / перезаписать метод init, либо я найду способ отсоединить исходные события, а затем я смогу расширить или переписать ErrorHandler.Я предпочитаю более поздний вариант, потому что мне нужно расширить не только ErrorHandler в этом стандартном приложении fiori, но и еще шесть.И всегда переписывать метод init кажется хуже, чем всегда переписывать ErrorHandler.