在SAPUI5中加载OData时失败

时间:2017-10-10 06:04:09

标签: odata sapui5

我已经在manifest.json

中配置了从SAP UI5访问我的OData服务的信息
{
"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时,我可以看到我已经实例化了Model,但它是空的,没有数据......你有这种行为吗?任何建议???

非常感谢!! CBR

2 个答案:

答案 0 :(得分:0)

到目前为止,您所做的是:建立与模型的连接。

如果你想用数据填充它,你可以通过将模型绑定到UI元素来实现,例如a table,或以编程方式读取数据:sap.ui.model.Model getProperty()。

在你的情况下,你打电话

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

答案 1 :(得分:0)

OData模型最初不包含来自实体的任何数据。它只是在模型实例化期间请求的元数据。

可以通过以下方式收集实体集:

  • 通过C R U D API手动
  • 让UI5根据聚合或元素绑定定义自动处理请求(首选):

      

    后端的请求由ODataModel提供的列表绑定,元素绑定和CRUD函数触发。属性绑定不会触发请求。

查看文档OData V2 Model 以下是similar answerhttps://embed.plnkr.co/wAlrHB/

的示例

注意:getPropertygetObject都不会发送任何请求,但会从缓存中返回值的副本。