在失败的时候SAPUI5负载的OData(Fail when load OData in SAPUI

2019-09-30 17:16发布

我已经配置了信息从SAP UI5访问我的OData服务在manifest.json

{
"sap.app": { ...
    },
    "dataSources": {
        "Test": {
            "uri": "/sap/opu/odata/sap/ZHCM_SRV/",
            "type": "OData",
            "settings": {
                "odataVersion": "2.0",
                "localUri": "localService/metadata.xml"
            }
        }
    } ...
"sap.ui5": {
    "rootView": {
        "viewName": "test.view.App",
        "type": "XML",
        "id": "app"
    }, ...
    "models": {
        "i18n": {
            "type": "sap.ui.model.resource.ResourceModel",
            "settings": {
                "bundleName": "test.i18n.i18n"
            }
        },
        "Test": {
            "type": "sap.ui.model.odata.v2.ODataModel",
            "settings": {
                "defaultOperationMode": "Server",
                "defaultBindingMode": "TwoWay",
                "defaultCountMode": "None"
            },
            "dataSource": "Test"
        }
    },
    "routing": { ...
}

在我Component.js我有:

init: function() {

        UIComponent.prototype.init.apply(this, arguments);

        this.getRouter().initialize();

        this.setModel(models.createDeviceModel(), "device");

        // I get the Url from configuration in Manifest.json
        var sServiceUrl = this.getMetadata().getManifestEntry("sap.app").dataSources["Test"].uri;

        // I create the OData 
        var sabModel = new sap.ui.model.odata.v2.ODataModel(sServiceUrl);

        // Load the MetaData.
        sabModel.getServiceMetadata();

        // Binding to the Model.
        this.setModel(sabModel, "Sabbatical");

当我检查oModel我可以看到我已经实例化的模型,但它是空的,没有数据...你有没有过这样的行为? 任何建议???

非常感谢!! CBR

Answer 1:

OData的机型不包含来自实体的任何数据开始。 这只是模型的实例化过程中所要求的元数据。

实体集可以聚集在以下几个方面:

  • 通过手动Ç ř ù d的API
  • 让UI5手柄请求自动根据聚集或元件绑定定义(优选的):

    要求到后端通过列表绑定,绑定元素,并通过ODataModel提供CRUD功能触发。 属性绑定不触发请求。

看看文档的OData V2模式 。
下面是从一个例子类似的答案 : https://embed.plnkr.co/wAlrHB/


注意:无论是getProperty也没有getObject发出任何请求,但是从缓存返回值的副本。



Answer 2:

你已经完成的工作是:建立该模型的连接。

如果你想用数据来填充它,你可以通过模型或者绑定到UI元素,例如这样做表 ,或者通过编程方式读取数据: sap.ui.model.Model的getProperty()。

在你的情况,你会打电话

var yourVariable = sabModel.getProperty('path/to/your/property');


文章来源: Fail when load OData in SAPUI5
标签: odata sapui5