routing - SAPUI5 路由抛出错误 “Control (ID of an App control) could not be found”

标签 routing sapui5 sap-fiori

这个问题来自 this answer (我无法运行源代码),我的需求与 this question 类似,这是一个带有应用程序控件的页面,导航到一个带有一个主 View 和一个详细信息 View 的 SplitContainer。 Master.view.xml 加载成功,但我得到

"Control with ID app could not be found"



单击项目时出错。

我的元数据.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"
    }
  }
}

我不确定子路由是否仍然需要这么多目标。我知道问题出在 "targetControl" : "app""split" route ,但是如果我在 "object" 中添加“targetControl”:“idAppControl”路线,它也会产生

Control with ID idAppControl could not be found



this answer说过:

You can't join the same control as your parent route has.



我现在真的很困惑。

我也试过删除 "rootview""sap.ui5" ,不工作。

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

最佳答案

感谢这个 route configuration doc ,我解决了我的问题。

我还以为是"targetControl": "app"split导致此错误的路由,但实际上是因为 "controlId": "app"routing.config导致这个问题。

The config parameter defines the default values for route configuration.



更改后,我遇到了另一个错误:

The target worklist has no controlId set and no parent so the target cannot be displayed.



所以我删除了targetworklist路由并添加 targetControl: app在其中,因为它不再具有默认值 targetControl值(value)。

这是新的路由配置:
"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"
                }
            ]
        }
    ],
}

关于routing - SAPUI5 路由抛出错误 “Control (ID of an App control) could not be found”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39160334/

相关文章:

javascript - 使用 JavaScript 将字符串发送到 Servlet,并将结果从 servlet 发送回 JavaScript

javascript - SAPUI5 在 Controller 中动态创建 ComboBox

javascript - SAPUI5 表项重复 ID

sapui5 - 在 SAP Fiori 中添加自定义库作为依赖项

javascript - 过滤值 sapui5 后忙碌指示器不会停止

routing - Windows 上的数据包重定向

Symfony2 部署到 ubuntu 服务器

ruby-on-rails - rails ajax 调用是否应该捆绑到它们自己的单独 Controller 中?

ruby-on-rails - 如何从多个地方重定向到上一页?

javascript - 从 XML View SAPUI5 复制列表项