SAP UI5> 1.30,如何在初始请求之前设置自定义模型头

时间:2016-03-30 09:39:40

标签: sap sapui5 sap-fiori

在使用清单文件之前,我曾经将自定义标头添加到我的oData模型的配置中。现在从SAP UI5 1.30开始,Component.js正在使用清单文件,一旦运行时进入Component.js init()函数,模型就已经加载,并且已经向我的服务发出了第一个请求。 我需要一种方法来在运行时和第一次请求我的服务之前设置自定义标头。

之前:

    // The service URL for the oData model
    var oServiceConfig = this.getMetadata().getConfig().serviceConfig;
    var sServiceUrl = oServiceConfig.serviceUrl;

    // the metadata is read to get the location of the i18n language files later
    var mConfig = this.getMetadata().getConfig();
    this._routeMatchedHandler = new sap.m.routing.RouteMatchedHandler(this.getRouter(), this._bRouterCloseDialogs);

    // create oData model
    this._initODataModel(sServiceUrl);

// _initODataModel function

    headers = {custom: 'hello world'};
    var oConfig = {
        metadataUrlParams: {},
        json: true,
        // loadMetadataAsync : true,
        defaultBindingMode: "OneWay",
        defaultCountMode: "Inline",
        useBatch: true,
        headers: headers
    };

    var oModel = new sap.ui.model.odata.ODataModel(sServiceUrl, oConfig);       
    this.setModel(oModel);

2 个答案:

答案 0 :(得分:1)

manifest.json文件aka app描述符不像你需要的那样动态。换句话说:您无法使用应用描述符实现您想要的功能。这是使用app描述符的缺点。

您可以使用Component.js来获得动态效果。在那里你可以手动实例化你的模型...也许你也可以配置组件" old"没有manifest.json文件的方法。

答案 1 :(得分:0)

您可以在 sap.ui5 / models / myModel / settings 中的manifest.json中指定传递给模型构造函数的对象:

"sap.app": {
  "dataSources": {
    "myDatasource": {
      "uri": "/sap/hba/r/apf/core/odata/apf.xsodata",
      "type": "OData",
      "settings": {
         "odataVersion": "2.0"
      }
    }
  }
},
"sap.ui5": {
  "models": {
     "myModel": {
        "datasource": "myDatasource",
        "settings": {
          "headers": {
             "headername1":"headervalue1",
             "headername2":"headervalue2",
          }
        }
     }
  }  
}