在使用清单文件之前,我曾经将自定义标头添加到我的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);
答案 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",
}
}
}
}
}