You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在SAPUI5应用中使用OData V2(Northwind)数据求助

SAPUI5 OData V2无法获取Northwind数据的问题解决

核心问题:ODataModel初始化URL错误

你当前创建ODataModel时直接使用了带实体集Orders和查询参数$format=json的URL,这不符合ODataModel的使用规范。ODataModel需要指向服务根地址,而非具体的实体集请求路径。

修正后的控制器代码

sap.ui.define([
  "sap/ui/core/mvc/Controller",
  "sap/ui/model/odata/v2/ODataModel"
], function (Controller, ODataModel) {
  "use strict";

  return Controller.extend("c.g.odataapp2.controller.Root", {
    onInit: function () {
      // 使用Northwind服务根地址,去掉实体集和查询参数
      var oModel = new ODataModel("https://services.odata.org/V2/Northwind/Northwind.svc/", {
        json: true, // 强制返回JSON格式,无需手动加$format=json
        useBatch: false // 禁用批处理,避免新手常见的批处理配置问题
      });
      // 添加错误监听,排查请求问题
      oModel.attachRequestFailed(function(oEvent) {
        var oParams = oEvent.getParameters();
        console.error("请求失败:", oParams.message);
        console.error("响应内容:", oParams.response.body);
      });
      this.getView().setModel(oModel, "odm1");
    }
  });
});

修正XML视图的绑定路径

由于模型现在指向服务根,表格的items需要绑定到实体集Orders,ODataModel会自动解析返回的results数组:

<mvc:View controllerName="c.g.odataapp2.controller.Root"
  xmlns:mvc="sap.ui.core.mvc"
  displayBlock="true"
  xmlns="sap.m">
  <Page id="page" title="{i18n>title}">
    <Table id="idOrdersTable" items="{odm1>/Orders}">
      <columns>
        <Column>
          <Text text="OrderId" />
        </Column>
        <!-- ... -->
      </columns>
      <ColumnListItem>
        <Text text="{odm1>OrderID}" />
        <!-- ... -->
      </ColumnListItem>
    </Table>
  </Page>
</mvc:View>

其他必要配置检查

  • 跨域(CORS)处理:如果直接访问services.odata.org出现跨域错误,不要依赖第三方CORS代理(如cors-anywhere,这类服务稳定性差),建议在项目中配置本地代理:
    • 若使用UI5 Tooling,在ui5.yaml中添加代理规则
    • 若部署在Cloud Foundry,在neo-app.json中配置路由转发
  • 网络与权限:确保本地网络能正常访问https://services.odata.org,无防火墙或企业代理拦截

内容的提问来源于stack exchange,提问作者SAP ASFlash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:17:10