Routing SAPUI5路由抛出错误“;找不到控件(应用程序控件的ID)”;

Routing SAPUI5路由抛出错误“;找不到控件(应用程序控件的ID)”;,routing,sapui5,sap-fiori,Routing,Sapui5,Sap Fiori,这个问题源于(我无法运行源代码),我的要求与类似,这是一个带有应用程序控件的页面,导航到一个带有一个主视图和一个详细视图的SplitContainer。已成功加载Master.view.xml,但我得到 “找不到ID为app的控件” 单击项目时出错 my metadata.json: "routing": { "config": { "routerClass": "cts.alert.MyRouter", "viewType": "XML", "viewPath":

这个问题源于(我无法运行源代码),我的要求与类似,这是一个带有应用程序控件的页面,导航到一个带有一个主视图和一个详细视图的SplitContainer。已成功加载Master.view.xml,但我得到

“找不到ID为app的控件”

单击项目时出错

my metadata.json:

"routing": {
  "config": {
    "routerClass": "cts.alert.MyRouter",
    "viewType": "XML",
    "viewPath": "cts.alert.view",
    "controlId": "app",
    "controlAggregation": "pages",
    "clearTarget": "false",
    "bypassed": {
      "target": [
        "notFound"
      ]
    },
    "async": true
  },
  "routes": [
    {
      "pattern": "",
      "name": "worklist",
      "target": [
        "worklist"
      ]
    },
    {
      "pattern": "split",
      "name": "split",
      //<SplitContainer id="idAppControl"> in SplitApp.view.xml
      "view": "SplitApp",
      //<App id="app"/> in App.view.xml
      "targetControl": "app",
      "subroutes": [
        {
          "pattern": "master",
          "name": "main",
          "view": "Master",
          "targetAggregation": "masterPages",
          "targetControl": "idAppControl", //SplitContainer id
          "subroutes": [
            {
              "pattern": "VEHICLES/{objectId}",
              "name": "object",
              "view": "Detail",
              "targetAggregation": "detailPages",
            }
          ]
        }
      ]
    },
    {
      "name": "catchallMaster",
      "view": "Master",
      "targetAggregation": "masterPages",
      "targetControl": "idAppControl",
      "subroutes": [
        {
          "pattern": ":all*:",
          "name": "catchallDetail",
          "view": "NotFound"
        }
      ]
    }
  ],
  "targets": {
    "master": {
      "viewName": "Master",
      "viewLevel": 2,
      "viewId": "master",
      "controlAggregation": "masterPages"
    },
    "worklist": {
      "viewName": "Worklist",
      "viewId": "worklist",
      "viewLevel": 1
    },
    "object": {
      "viewName": "Detail",
      "viewId": "detail",
      "viewLevel": 3
    },
    "objectNotFound": {
      "viewName": "ObjectNotFound",
      "viewId": "objectNotFound"
    },
    "notFound": {
      "viewName": "NotFound",
      "viewId": "notFound"
    },
    "detailObjectNotFound": {
      "viewName": "DetailObjectNotFound",
      "viewId": "detailObjectNotFound"
    },
    "detailNoObjectsAvailable": {
      "viewName": "DetailNoObjectsAvailable",
      "viewId": "detailNoObjectsAvailable"
    }
  }
}
“路由”:{
“配置”:{
“路由器类”:“cts.alert.MyRouter”,
“视图类型”:“XML”,
“视图路径”:“cts.alert.view”,
“controlId”:“应用程序”,
“控制聚合”:“页面”,
“clearTarget”:“false”,
“绕过”:{
“目标”:[
“未找到”
]
},
“异步”:true
},
“路线”:[
{
“图案”:“图案”,
“名称”:“工作列表”,
“目标”:[
“工作列表”
]
},
{
“模式”:“拆分”,
“名称”:“拆分”,
//在SplitApp.view.xml中
“视图”:“SplitApp”,
//他说:

您不能加入与父管线相同的控件

我现在真的很困惑

我还尝试在
“sap.ui5”
中删除
“rootview”
,但不起作用

欢迎任何帮助!提前谢谢!

多亏了这一点,我解决了我的问题

我原以为是
“targetControl”:“app”
拆分
路由中导致了此错误,但实际上是因为
路由.config中的
“controlId”:“app”
导致了此问题

config参数定义路由配置的默认值

更改后,我又出现了另一个错误:

目标工作列表未设置controlId,也没有父级,因此无法显示目标

因此,我删除了
worklist
route中的
target
,并在其中添加了
targetControl:app
,因为它不再具有默认的
targetControl

以下是新的路由配置:

"routing": {
    "config": {
        "routerClass": "cts.alert.MyRouter",
        "viewType": "XML",
        "viewPath": "cts.alert.view",
        "controlAggregation": "pages",
        "clearTarget": "false",
        "bypassed": {
            "target": [
                "notFound"
            ]
        },
        "async": true
    },
    "routes": [
        {
            "pattern": "",
            "name": "worklist",
            "view": "Worklist",
            "targetControl": "app"
        },
        {
            "pattern": "split",
            "name": "split",
            "view": "SplitApp",
            "targetControl": "app",
            "subroutes": [
                {
                    "pattern": "master",
                    "name": "main",
                    "view": "Master",
                    "targetAggregation": "masterPages",
                    "targetControl": "idAppControl",
                    "subroutes": [
                        {
                            "pattern": "VEHICLES/{objectId}",
                            "name": "object",
                            "view": "Detail",
                            "targetAggregation": "detailPages"
                        }
                    ]
                }
            ]
        },
        {
            "name": "catchallMaster",
            "view": "Master",
            "targetAggregation": "masterPages",
            "targetControl": "idAppControl",
            "subroutes": [
                {
                    "pattern": ":all*:",
                    "name": "catchallDetail",
                    "view": "NotFound"
                }
            ]
        }
    ],
}
我认为manifest.json中的值“app”(
“controlId”):“app”
) 还需要匹配初始视图中应用程序的id

<mvc:View controllerName="MyView" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" 
xmlns="sap.m" xmlns:html="http://www.w3.org/1999/xhtml">    
  <Shell id="shell">
    <App id="app">

对我来说,解决方案是在目标中使用
“clearControlAggregation”:true