UI模块未在SCP MTA应用程序中获取正确的JS服务

2020-08-16 08:32发布

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

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


 

HI

我正在使用SAP Cloud Platform Cloud Foundry试用版。 我正在尝试创建一个具有数据库,node.js和ui模块的简单MTA应用程序(名为Test)。 我不想将HANA db连接到我的数据库模块。 我希望CDS Artifacts表中已经存在的数据通过oData服务在node js模块中使用并公开给ui。

我创建了带有CDS工件(名为CDS)和表(名为Parameter)的数据库模块。 我已经通过插入命令在此表中插入了一些记录。 我不想使用Hana db,因此还没有建立Hana db连接和任何其他用户提供的服务。

我创建了一个node.js模块并添加了.xsodata文件,该文件具有以下代码来设置oData服务:

服务名称空间" Test.data.services" {" Test.db :: cds.Parameter"为" Parameters"; }

当我执行节点js模块并通过在节点js网址中添加"/ui.xsodata/Parameters?$format=json"来导航至表时,我可以在浏览器中以JSON格式查看参数表的数据

下一步是创建ui模块。 我们调用Pameters表和代码以表格形式显示数据,如下所示:

 getControllerName:function(){
 返回" ui.ui.controller.DBF";
 },


/**在实例化Controller之后最初被调用一次。 这是构造UI的地方。
 *由于将控制器赋予了此方法,因此可以立即附加其事件处理程序。
 * @memberOf controller.DBF
 */
 createContent:函数(oController){
 var oModel = new sap.ui.model.odata.v2.ODataModel("/img/ui.xsodata/",{json:true});

         oModel.setRefreshAfterChange(true);
        
         var oParamsTable = new sap.m.Table({
             模式:sap.m.ListMode.SingleSelectLeft,
             列: [
                 new sap.m.Column({标头:new sap.m.Label({文本:" Parameter ID"})}),
                 new sap.m.Column({标头:new sap.m.Label({文本:" Parameter Description"})}),
                 new sap.m.Column({标头:new sap.m.Label({文本:" Parameter Value"})})
             ],
             项目:{
                 路径:"/img/Parameters",
                 参数:{
                     选择:" Param_Key,Param_Desc,Param_Type"
                 },
                 模板:新sap.m.ColumnListItem({
                     细胞: [
                         new sap.m.Text({text:" {Param_Key}"}),
                         new sap.m.Text({text:" {Param_Desc}"}),
                         new sap.m.Text({text:" {Param_Type}"})
                     ]
                 })
             }
         });


         oParamsTable.setHeaderText(" Parameter Table");
         oParamsTable.setModel(oModel);
       
 

设置DB,JS和UI模块后,我们的MTA如下所示。

问题在于,当我们执行UI模块时,会执行ui代码,但不会从Parameter表中显示数据。 谁能提供确切的问题所在? 我认为UI模块无法选择正确的js服务。 当我看到开发人员工具并检查日志时,用户界面未指向正确的URL。

模块:
   -名称:db
     类型:hdb
     路径:db
     要求:
       -名称:hdi_db
   -名称:js
     类型:nodejs
     路径:js
     提供:
       -名称:js_api
         特性:
           网址:" $ {default-url}"
     要求:
       -名称:hdi_db
         特性:
           TARGET_CONTAINER:'〜{hdi-container-name}'
       -名称:uaa_DBF_Test
   -名称:ui
     类型:html5
     路径:ui
     参数:
       磁盘配额:256M
       记忆体:256M
     构建参数:
       制造商:咕unt声
     要求:
       -名称:uaa_DBF_Test
       -名称:dest_DBF_Test
       -名称:js_api
         组:目的地
         特性:
           名称:js_be
           网址:"〜{url}"
           forwardAuthToken:true
     特性:
       TENANT_HOST_PATTERN:"'^(。*)-Jeroen-ui.cfapps。(。*)。hana.ondemand.com'"
 资源:
   -名称:hdi_db
     特性:
       hdi-container-name:" $ {服务名称}"
     类型:com.sap.xs.hdi-container
   -名称:uaa_DBF_Test
     参数:
       路径:./xs-security.json
       服务计划:应用
       服务:xsuaa
     类型:org.cloudfoundry.managed-service
   -名称:dest_DBF_Test
     参数:
       服务计划:精简版
       服务:目的地
     类型:org.cloudfoundry.managed-service 

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

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


 

HI

我正在使用SAP Cloud Platform Cloud Foundry试用版。 我正在尝试创建一个具有数据库,node.js和ui模块的简单MTA应用程序(名为Test)。 我不想将HANA db连接到我的数据库模块。 我希望CDS Artifacts表中已经存在的数据通过oData服务在node js模块中使用并公开给ui。

我创建了带有CDS工件(名为CDS)和表(名为Parameter)的数据库模块。 我已经通过插入命令在此表中插入了一些记录。 我不想使用Hana db,因此还没有建立Hana db连接和任何其他用户提供的服务。

我创建了一个node.js模块并添加了.xsodata文件,该文件具有以下代码来设置oData服务:

服务名称空间" Test.data.services" {" Test.db :: cds.Parameter"为" Parameters"; }

当我执行节点js模块并通过在节点js网址中添加"/ui.xsodata/Parameters?$format=json"来导航至表时,我可以在浏览器中以JSON格式查看参数表的数据

下一步是创建ui模块。 我们调用Pameters表和代码以表格形式显示数据,如下所示:

 getControllerName:function(){
 返回" ui.ui.controller.DBF";
 },


/**在实例化Controller之后最初被调用一次。 这是构造UI的地方。
 *由于将控制器赋予了此方法,因此可以立即附加其事件处理程序。
 * @memberOf controller.DBF
 */
 createContent:函数(oController){
 var oModel = new sap.ui.model.odata.v2.ODataModel("/img/ui.xsodata/",{json:true});

         oModel.setRefreshAfterChange(true);
        
         var oParamsTable = new sap.m.Table({
             模式:sap.m.ListMode.SingleSelectLeft,
             列: [
                 new sap.m.Column({标头:new sap.m.Label({文本:" Parameter ID"})}),
                 new sap.m.Column({标头:new sap.m.Label({文本:" Parameter Description"})}),
                 new sap.m.Column({标头:new sap.m.Label({文本:" Parameter Value"})})
             ],
             项目:{
                 路径:"/img/Parameters",
                 参数:{
                     选择:" Param_Key,Param_Desc,Param_Type"
                 },
                 模板:新sap.m.ColumnListItem({
                     细胞: [
                         new sap.m.Text({text:" {Param_Key}"}),
                         new sap.m.Text({text:" {Param_Desc}"}),
                         new sap.m.Text({text:" {Param_Type}"})
                     ]
                 })
             }
         });


         oParamsTable.setHeaderText(" Parameter Table");
         oParamsTable.setModel(oModel);
       
 

设置DB,JS和UI模块后,我们的MTA如下所示。

问题在于,当我们执行UI模块时,会执行ui代码,但不会从Parameter表中显示数据。 谁能提供确切的问题所在? 我认为UI模块无法选择正确的js服务。 当我看到开发人员工具并检查日志时,用户界面未指向正确的URL。

模块:
   -名称:db
     类型:hdb
     路径:db
     要求:
       -名称:hdi_db
   -名称:js
     类型:nodejs
     路径:js
     提供:
       -名称:js_api
         特性:
           网址:" $ {default-url}"
     要求:
       -名称:hdi_db
         特性:
           TARGET_CONTAINER:'〜{hdi-container-name}'
       -名称:uaa_DBF_Test
   -名称:ui
     类型:html5
     路径:ui
     参数:
       磁盘配额:256M
       记忆体:256M
     构建参数:
       制造商:咕unt声
     要求:
       -名称:uaa_DBF_Test
       -名称:dest_DBF_Test
       -名称:js_api
         组:目的地
         特性:
           名称:js_be
           网址:"〜{url}"
           forwardAuthToken:true
     特性:
       TENANT_HOST_PATTERN:"'^(。*)-Jeroen-ui.cfapps。(。*)。hana.ondemand.com'"
 资源:
   -名称:hdi_db
     特性:
       hdi-container-name:" $ {服务名称}"
     类型:com.sap.xs.hdi-container
   -名称:uaa_DBF_Test
     参数:
       路径:./xs-security.json
       服务计划:应用
       服务:xsuaa
     类型:org.cloudfoundry.managed-service
   -名称:dest_DBF_Test
     参数:
       服务计划:精简版
       服务:目的地
     类型:org.cloudfoundry.managed-service 
付费偷看设置
发送
6条回答
d56caomao
1楼-- · 2020-08-16 09:08

你好

您仍然面临着同样的问题吗? 这是否有效?。Cloud代工试用帐户也面临同样的问题。 请让我知道这是否对您有用。

此致

乔尔王子

何必丶何苦呢
2楼-- · 2020-08-16 09:24

嗨耶隆,

我面临着类似的问题,即来自UI5模块的路由没有被重定向到NodeJS模块服务。

除了如何在MTA中设置目标位置外,我还在xs-app.json文件中为UI5模块定义了路由,如下所述:

"路线":[{
 " source":"/node(.*)",
 "目标":" js-api",
 " csrfProtection":是的,
 " authenticationType":" xsuaa"
 }] 

它仍然不起作用。

南山jay
3楼-- · 2020-08-16 09:04

嗨Jeroen,

阅读我的博客有关如何从前端应用程序到后端服务进行身份验证 通过使用任何HTML5模块(Cloud Foundry)中包含的AppRouter通过目标。

如果您需要查看工作示例,请检查 CAP-云应用程序编程模型。 这个WebIDE模板将在cds构件的帮助下为您创建db和srv,因此您不必亲自创建任何运行时数据库构件,也不必创建odata服务。 将html5应用程序添加到MTA后,它还会添加对AppRouter的支持-因此,您还可以从针对您的用例自动化的路由使用中受益。

我建议您测试此CAP方法,然后检查其工作方式-更具体地说,如何在xs-app.json中指定路由以及如何将JWT令牌转发到您的后端服务 。

最好的问候,
伊万

SAP砖家
4楼-- · 2020-08-16 09:17

您好 https://people.sap.com/ashishsingh https://people.sap.com/jeroen.kusters https: //people.sap.com/prince.joel

尝试几次检查后,我也面临同样的问题,毫无头绪。

您设法解决了这个问题吗? 如果是,您能否分享您是如何解决的?

非常感谢。

此致

寻求。

hongfeng1314
5楼-- · 2020-08-16 09:24

您好https://people.sap.com/jeroen.kusters

我遇到了同样的问题,经过多次检查和广泛的浏览后找到了答案。

您的代码和路线信息可能没有任何问题。

请确保您正在Cloud Foundry目标环境中运行UI模块。 (您可以更改运行配置)

您可以检查并验证在Cloud Foundry目标环境中运行后是否还有其他错误。

此致

寻求n。

SAP小菜
6楼-- · 2020-08-16 09:19

嗨, Ashish Singh Jeroen Kusters 乔尔王子

最后我可以解决它,请检查答案,让我知道它是否对您有用。

此致

寻求。

一周热门 更多>