代码之家  ›  专栏  ›  技术社区  ›  Chan Yoong Hon

SAPUI5,来自两个不同URL的数据源

  •  1
  • Chan Yoong Hon  · 技术社区  · 8 年前

    我是SAPUI5的新手,目前正在构建SAPUI5应用程序,并从后端使用ODATA服务当我创建应用程序并选择服务URL时。 服务URL如下附件。

    enter image description here

    但是,现在在我的应用程序中,我必须添加另一个完全url的数据源在我的manifest.json中我可以改变同一个url的不同导航,如下所示

    "dataSources": {
            "mainService": {
                "uri": "/sap/opu/odata/sap/SEPMRA_SHOP/",
                "type": "OData",
                "settings": {
                    "odataVersion": "2.0",
                    "localUri": "localService/metadata.xml"
                }
            },
            "mainService2": {
                "uri": "/odata/V2/OData/OData.svc/",
                "type": "OData",
                "settings": {
                    "odataVersion": "2.0",
                    "localUri": "localService/metadata.xml"
                }
            }
        },
    

    如何为SAPUI5应用程序添加不同的数据源url?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Rafael López Martínez    8 年前

    您需要在SAP云平台驾驶舱中创建一个目的地。 根据你的截图,你已经在使用一个叫做“odata-odata”的。

    你有 documentation here

    下面是截图。

    此外,如果您想从云中访问您的专用网络中的NW系统,则需要设置云连接器检查 documentation here

    SAP云平台配置

    enter image description here

    一旦配置了目的地并且数据源块已经存在(如屏幕截图中所示),就需要创建两个OData模型因此,在metadata.json文件中,转到底部,有一个名为“models”的节点,其中可能有如下内容:

        "models": {
            "i18n": {
                "type": "sap.ui.model.resource.ResourceModel",
                "settings": {
                   ...
                }
            },
            "": {
                "type": "sap.ui.model.odata.v2.ODataModel",
                "settings": {
                    "defaultOperationMode": "Server",
                    "defaultBindingMode": "OneWay",
                    "defaultCountMode": "Request"
                },
                "dataSource": "mainService",
                "preload": true
            },
            "dataModel2": {
                "type": "sap.ui.model.odata.v2.ODataModel",
                "settings": {
                    "defaultOperationMode": "Server",
                    "defaultBindingMode": "OneWay",
                    "defaultCountMode": "Request"
                },
                "dataSource": "mainService2",
                "preload": true
            }
        }
    

    你需要添加块 "dataModel2":{ ... }

    哪里:

    • “dataModel2”是第二个模型的名称(选择您喜欢的模型,它不需要是dataModel2)。
    • 确保 "dataSource": "mainService2" 所以这个模型指向第二个数据源
    • 在设置中,可以根据需要设置模型可能最重要的是“defaultBindingMode”如果只可读,则将其设置为“单向”;如果可读/写,则将其设置为“双向”。

    然后,您只需要使用您选择的模型名定义到该模型的所有绑定,如第一个项目符号中所述例如:

    <Text text="{dataModel2>/path/to/my/property"}"></Text>
    

    但是要注意这个体系结构,根据SAP最佳实践,您应该始终尝试只使用一个OData服务要维护多个事件可能是一个噩梦,特别是当您使用模型更改/数据请求/数据接收事件,或使用metadataFailed/metadataLoaded事件进行错误处理时,因为您必须为这两个模型管理它们,而且它们是异步的。。。

    推荐文章