应用程序在后端系统上部署时崩溃(!!!)

2020-09-20 01:38发布

         点击此处--->   EasySAP.com群内免费提供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(" kr​​istal.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;
 如果(streamEnd  0){
 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)

         点击此处--->   EasySAP.com群内免费提供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(" kr​​istal.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;
 如果(streamEnd  0){
 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)  
付费偷看设置
发送
1条回答
黑丝骑士
1楼 · 2020-09-20 01:56.采纳回答

这不是弹出窗口,问题是负责屏幕上弹出位置的控件的声明。 它是使用sap.ui.getCore()和控件的完整限定路径声明的,这确实是不明智的,因为它是在运行时动态生成的,并且在不同的环境上可能会发生变化...

一周热门 更多>