如何隐藏或隐藏服务器错误消息并在SAP UI5中显示自定义消息

2020-09-15 02:20发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)如何避免出现此服务器错误消息[例...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如何避免出现此服务器错误消息[例如:400,500]并在SAP UI5中显示自定义消息

预先感谢:)

(9.4 kB)
1条回答
一只江湖小虾
2020-09-15 03:02 .采纳回答

通过在应用程序中实现ErrorHandler.js,我们可以实现这一目标。

ErrorHandler.js

通过自动附加到模型事件并在需要时显示错误来处理应用程序错误。

#1在Component.js中初始化ErrorHandle

 init:function(){

    this._oErrorHandler =新的ErrorHandler(this);

 } 

#2将此文件ErrorHandler.js添加到Controller文件夹中

 sap.ui.define([
 " sap/ui/base/Object",
 " sap/m/MessageBox",
 " sap/m/MessageToast"
 ],函数(UI5Object,MessageBox,MessageToast){
 "使用严格";


 返回UI5Object.extend(" z.controller.ErrorHandler",{


/**
 *通过自动附加到模型事件并在需要时显示错误来处理应用程序错误。
 * @类
 * @param {sap.ui.core.UIComponent} o对应用程序组件的组件引用
 * @上市
 * @alias z.controller.ErrorHandler
 */
 构造函数:function(oComponent){
 this._oResourceBundle = oComponent.getModel(" i18n")。getResourceBundle();
 this._oComponent = oComponent;
 this._oModel = oComponent.getModel();
 this._bMessageOpen = false;
 this._sErrorText = this._oResourceBundle.getText(" errorText");


 this._oModel.attachMetadataFailed(function(oEvent){
 var oParams = oEvent.getParameters();
 this._showServiceError(oParams.response);
 }, 这个);


 this._oModel.attachRequestFailed(function(oEvent){
 var oParams = oEvent.getParameters();
//在服务中找不到的实体也会在oData中引发404错误。
//我们已经用notFound目标介绍了这种情况,因此我们在这里跳过它。
//无法发送到服务器的请求是我们必须解决的技术错误
 如果(oParams.response.statusCode!==" 404" ||(oParams.response.statusCode === 404 && oParams.response.responseText.indexOf(
 "无法发布")=== 0)){
 this._showServiceError(oParams.response);
 }
 }, 这个);
 },


/**
 *在服务呼叫失败时显示{@link sap.m.MessageBox}。
 *仅显示第一条错误信息。
 * @param {string} s详细说明应要求显示的技术错误
 * @私人的
 */
 _showServiceError:function(sDetails){
 如果(this._bMessageOpen){
 返回;
 }
 this._bMessageOpen = true;
/*MessageBox.error(
 this._sErrorText,
 {
 id:" serviceErrorMessageBox",
 details:sDetails,
 styleClass:this._oComponent.getContentDensityClass(),
 操作:[MessageBox.Action.CLOSE],
 onClose:function(){
 this._bMessageOpen = false;
 } .bind(this)
 }
 ); */
 var aDetails = JSON.parse(sDetails.responseText);
 MessageToast.show(this._sErrorText +"" + aDetails.error.message.value);
 console.log(" eeee:",aDetails);
 this._bMessageOpen = false;
 }


 });


 });
 

#3替换_showServiceError方法,如下所示:

 _showServiceError:function(sDetails){
 如果(this._bMessageOpen){
 返回;
 }
 this._bMessageOpen = true;
 var aDetails = JSON.parse(sDetails.responseText);
 MessageToast.show(this._sErrorText +"" + aDetails.error.message.value);
 this._bMessageOpen = false;
 }
 

一周热门 更多>