Как расширить ErrorHandler стандартного приложения Fiori - PullRequest
1 голос
/ 07 мая 2019

в следующем посте, вероятно, ответ на мой вопрос, но я его не вижу: Придерживайтесь универсального 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.

1 Ответ

0 голосов
/ 07 мая 2019

Я полагаю, потому что вы сначала вызываете супер-метод, который инициализирует исходный ErrorHandler (то есть присоединяет обработчики событий к ошибочным запросам и т. Д.). После этого вы просто добавляете больше обработчиков в свой собственный ErrorHandler. Вам необходимо отсоединить предыдущие обработчики (может быть сложно) или вообще не инициализировать исходный класс.

...