点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
我有一个可以与SAP Web IDE(个人版)配合使用的应用程序。 我在后端系统中部署了该应用程序,当我开始测试时,令我大吃一惊的是,在尝试保存一个错误的条目(想要查看是否出现错误消息)之后,出现了错误" 无法读取未定义的属性'getParent'"。 "未定义"是指我在基本控制器中使用的消息弹出窗口。 我的代码中没有发生异常,但是 MessagePopover-dbg.js 中没有发生异常(快照附在下面,错误1209行)。
Web IDE上的SAPUI5版本:1.44.12
后端系统上的SAPUI5版本:1.44.23
基本控制器代码,以及调用下面附带的弹出窗口的例程。 在其他情况下,我通常会向SAP发出注释,但是,由于我是SAPUI5的新手,所以我不能100%地确定我没有遗漏任何东西。 有什么想法吗?
/**********基本控制器***********/ sap.ui.define([ " sap/ui/core/mvc/Controller", " sap/ui/model/json/JSONModel", " sap/m/MessagePopover", " sap/m/MessagePopoverItem" ],函数(控制器,JSONModel,MessagePopover,MessagePopoverItem){ "使用严格"; var oMessageTemplate = new MessagePopoverItem({ 类型:" {type}", 标题:" {title}", 说明:" {description}" }); var oMessagePopover = new MessagePopover({ id:" actionEditMessagePopover", 项目:{ 路径:"/", 模板:oMessageTemplate } }); var msgModel = new JSONModel(" testModel"); return Controller.extend(" kristal.apps.agreements.controller.BaseController",{ /** *访问路由器的便捷方法。 * @上市 * @returns {sap.ui.core.routing.Router}此组件的路由器 */ getRouter:function(){ 返回sap.ui.core.UIComponent.getRouterFor(this); }, /** *通过名称获取视图模型的便捷方法。 * @上市 * @param {string} [sName]型号名称 * @返回{sap.ui.model.Model}模型实例 */ getModel:函数(sName){ 返回this.getView()。getModel(sName); }, /** *设置视图模型的便捷方法。 * @上市 * @param {sap.ui.model.Model} oModel模型实例 * @param {string} sName型号名称 * @returns {sap.ui.mvc.View}视图实例 */ setModel:函数(oModel,sName){ 返回this.getView()。setModel(oModel,sName); }, /** *资源捆绑的Getter。 * @上市 * @returns {sap.ui.model.resource.ResourceModel}组件的resourceModel */ getResourceBundle:function(){ 返回this.getOwnerComponent()。getModel(" i18n")。getResourceBundle(); }, /** *单击通过电子邮件共享按钮时的事件处理程序 * @上市 */ onShareEmailPress:function(){ var oViewModel =(this.getModel(" objectView")|| this.getModel(" worklistView"))); sap.m.URLHelper.triggerEmail( 空值, oViewModel.getProperty("/img/shareSendEmailSubject"), oViewModel.getProperty("/img/shareSendEmailMessage") ); }, _renderSAPMessages:函数(响应,sStart,oControl){ //提取消息 //当我们有多行时,捕获逻辑有效,然后重新初始化 //下一行处理 this.messageArray = []; var message; var start = sStart + 14; var resultString = response.substring(start); var messageStart = resultString.indexOf(" code")-1; var messageEnd = resultString.indexOf(" details")-2; while(messageEnd> 0){ message =" {" + resultString.substring(messageStart,messageEnd)+"}"; message = message.replace(" severity \":"," type \":"); //message = message.replace(" message \":"," description \":"); message = message.replace(" message \":"," subtitle \":"); message = message.replace(" code \":"," title \":"); message = message.replace(" error"," Error"); message = message.replace(" warning"," Warning"); message = message.replace(" Z666Z"," \",\" description \":\""); 尝试{ 消息= JSON.parse(消息); message.title = message.title +"" + message.subtitle; this.messageArray.push(message); var streamEnd = resultString.indexOf("}]}")-1; messageEnd + = 1; 如果(streamEnd0){ resultString = resultString.substring(start); messageStart = resultString.indexOf(" code")-1; messageEnd = resultString.indexOf(" details")-2; }其他{ messageEnd = 0; } }其他{ resultString = resultString.substring(messageEnd); messageStart = resultString.indexOf(" code")-1; 如果(messageStart> 0){ messageEnd = resultString.indexOf("}"); } 其他{ 打破; } } } catch(err){ start = resultString.indexOf(" sap-message:{")+ 14; 如果(开始> 0){ resultString = resultString.substring(start); messageStart = resultString.indexOf(" code")-1; messageEnd = resultString.indexOf(" details")-2; }其他{ messageEnd = 0; } } } msgModel.setData(this.messageArray); oMessagePopover.setModel(msgModel); 如果(this.messageArray.length> 0){ oMessagePopover.openBy(oControl); } }, _checkIfBatchRequestSucceeded:function(oEvent){ var oParams = oEvent.getParameters(); var aRequests = oEvent.getParameters()。requests; var oRequest; 如果(oEvent.getParameters()。response.responseText.indexOf(" sap-message:{")!== null){ 返回true; } 其他 { 如果(oParams.success){ 如果(aRequests){ for(var i = 0; i popover-error.jpg (316.1 kB)
这不是弹出窗口,问题是负责屏幕上弹出位置的控件的声明。 它是使用sap.ui.getCore()和控件的完整限定路径声明的,这确实是不明智的,因为它是在运行时动态生成的,并且在不同的环境上可能会发生变化...
一周热门 更多>