当前位置: 首页 > Web前端 > HTML5

SAPUI5ODataV4模型是如何构建的

时间:2023-04-05 17:27:56 HTML5

sap.ui.model.odata.v4.ODataModel是使用ODataV4服务的模型实现。SAPFiori元素构建块(sap.fe.macros)必须与SAPUI5ODataV4模型一起使用,而不是智能控件(sap.ui.comp库)或sap.ui.table.AnalyticalTable(或分析表架构)。不支持将TreeTable用于SAPUI5ODataV4模型。ODataV4模型主要是为ODataV4服务设计的。但是,也可以通过适配器使用ODataV2服务。ODataV2和V4模型的区别可以参考这个链接。详见:使用ODataV4模型使用ODataV2服务创建ODataV4模型实例时,需要传入一个map选项参数,该参数必须至少包含属性serviceUrl和同步模式。这是一个示例:sap.ui.define(["sap/ui/model/odata/v4/ODataModel"],function(ODataModel){varoModel=newODataModel({serviceUrl:"/sap/opu/odata4/IWBEP/V4_SAMPLE/default/IWBEP/V4_GW_SAMPLE_BASIC/0001/",synchronizationMode:"None"});});您还可以指定自定义查询:sap.ui.define(["sap/ui/model/odata/v4/ODataModel"],function(ODataModel){varoModel=newODataModel({serviceUrl:"/sap/opu/odata4/IWBEP/V4_SAMPLE/default/IWBEP/V4_GW_SAMPLE_BASIC/0001/?customParam=foo",synchronizationMode:"None"});});ODataV4模型允许开发人员指定是否将请求捆绑并作为批请求发送,以及何时发送请求。参数groupId指定了默认的批处理组,默认为“$auto”。可以使用参数updateGroupId为更新请求设置批处理组。如果未设置此参数,将使用groupId。以下代码实例化了一个模型,该模型将批处理组myAppUpdateGroup中的所有更新请求捆绑在一起;然后可以使用oModel.submitBatch("myAppUpdateGroup")发送批处理请求。sap.ui.define(["sap/ui/model/odata/v4/ODataModel"],function(ODataModel){varoModel=newODataModel({serviceUrl:"/sap/opu/odata4/IWBEP/V4_SAMPLE/default/IWBEP/V4_GW_SAMPLE_BASIC/0001/",synchronizationMode:"None",updateGroupId:"myAppUpdateGroup"});});您还可以使用描述符文件来初始化ODataV4模型。下面是一个示例:settings":{"odataVersion":"4.0"}}}以下是如何为OData模型设置自定义HTTP标头:"sap.ui5":{"models":{"":{"dataSource":"default","settings":{"autoExpandSelect":true,"httpHeaders":{"custom":"foo"},"synchronizationMode":"None",}}}}ODataV4模型传递“X-CSRF-Token”标头自动处理安全令牌。为此,“X-CSRF-Token”标头以“Fetch”值开头,并将包含在每个数据请求中。如果数据响应包含“X-CSRF-Token”标头,则此新值将被记住并从那时起使用。如果数据请求失败,状态为403,且“X-CSRF-Token”响应头值为“required”(不区分大小写),将获取新的安全令牌,并自动透明地重复数据请求。使用“X-CSRF-Token”标头值为“Fetch”的服务URL上的HEAD请求获取新的安全令牌。如果有“X-CSRF-Token”的响应头值,该响应值将被存储在内存中以备下次使用。如果服务不需要“X-CSRF-Token”标头,ODataV4模型应该忽略此请求标头。