2020-09-15 02:20发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
如何避免出现此服务器错误消息[例如:400,500]并在SAP UI5中显示自定义消息
预先感谢:)
通过在应用程序中实现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; }
最多设置5个标签!
通过在应用程序中实现ErrorHandler.js,我们可以实现这一目标。
ErrorHandler.js
通过自动附加到模型事件并在需要时显示错误来处理应用程序错误。
#1在Component.js中初始化ErrorHandle
#2将此文件ErrorHandler.js添加到Controller文件夹中
#3替换_showServiceError方法,如下所示:
一周热门 更多>