SAPUI5 - 当使用odataModel时,由data.js在内部触发的OData调用

时间:2017-03-15 04:18:19

标签: sapui5

我正在使用sap.ui.model.odata.ODataModel对后端进行服务调用并将数据绑定到UI。 编码非常基础。我不理解的是内部data.js对服务器的调用。当我做以下



var oDModel = new ODataModel(this.sapServiceURL + "/sap/opu/odata/sap/ZKMDOCUMENTS_SRV", {
  json: true,
  useBatch: false,
  defaultCountMode: sap.ui.model.odata.CountMode.None,
  skipMetadataAnnotationParsing: true
});



 我可以看到两个URL被触发,其中一个每次都失败。请看下面: enter image description here 第一个是我理解的元数据调用。我不知道第二次休息呼叫(始终失败,出现400错误)。 形成的第二个URL是

  

{hostURI} / SAP / OPU /的OData / SAP / ZKMDOCUMENTS_SRV / $跳过= 0&安培; $顶= 20

  • 第二个要求是什么?

  • 为什么要形成网址

  • 有没有办法避免这种调用,因为这会造成格式错误 URL反正

感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:1)

由于OData模型,每次说都不会发生这种情况。 OData模型根据您所做的绑定(声明性或procodurally)或基于过程ODataModel.read调用创建请求。

根据您在那里的请求格式,我的猜测是您的视图或片段中的某个位置已将聚合绑定到模型中的“/”路径。例如:

<List items="{/}">
    <StandardListItem />
</List>

或者,您可能具有聚合的相对绑定(例如items =“{}”),而父/祖先上下文可能是“/”。例如:

<Panel binding="{/}" > <!-- most likely the panel binding is done via code -->
    <List items="{}">
        <StandardListItem />
    </List>
<Panel>

我认为请求可能不是因为过程ODataModel.read调用,因为它请求聚合的分页(skip = 0和top = 20)部分。实际上,纯粹基于这两个数字,我会说你的视图或片段中的某个地方有一个增长=“真”的列表(这个列表正在引起请求)。