0

我正在尝试在 sapui5 应用程序中使用网关 OData 服务。

元数据 -/sap/opu/odata/SAP/ZUSER_MANAGE_SRV/$metadata如下: 在此处输入图像描述

UserdataSet -/sap/opu/odata/SAP/ZUSER_MANAGE_SRV/UserdataSet如下: 在此处输入图像描述

我的代码

var oModel = new sap.ui.model.odata.ODataModel("http://Host:Port/sap/opu/odata/SAP/ZUSER_MANAGE_SRV", false,"USER","Password");
        
    var app = new sap.m.App("myApp",{});
        
    var oTable = new sap.m.Table("list1", {
                                growing: true,
                                growingThreshold: 200,
                                //mode: sap.m.ListMode.SingleSelect,
                                columns: [
                                    new sap.m.Column({
                                        header: new sap.m.Label({text: "ID"})
                                    }),
                                    new sap.m.Column({
                                        header: new sap.m.Label({text: "First Name"})
                                    }),
                                    new sap.m.Column({
                                        header: new sap.m.Label({text: "Last Name"})
                                    })
                                ],
                                items: {
                                    path: "/UserdataSet",
                                    template: new sap.m.ColumnListItem({
                                        cells: [
                                            new sap.m.Input({value: "{EUname}"}),
                                            new sap.m.Input({value: "{EFirstname}"}),
                                            new sap.m.Input({value: "{ELastname}"})
                                        ]
                                    })
                                }
                            });    
    oTable.setModel(oModel);
    var page1 = new sap.m.Page("page1",{
        title: "App",
        content: [oTable]
    });
    
    app.addPage(page1);
    
    return app;

得到错误 - uncaught exception: [object Object]

详细错误: 在此处输入图像描述

请帮忙,我的代码有什么问题?

4

2 回答 2

0

您的 OData 服务需要与您的 UI5 应用程序位于同一台服务器上或看起来来自同一台服务器。如果它不在同一台服务器上,您应该让 Gateway 生成 CORS 标头。

请在此处找到有关 CORS 以及如何让网关生成这些标头的更多信息:http: //scn.sap.com/community/gateway/blog/2014/09/23/solve-cors-with-gateway-and-chrome

于 2016-03-29T18:37:51.320 回答
0

错误不是很清楚,在这种情况下,chrome 可能会显示更详细的错误。

如果您的应用程序服务器和 odata 服务不是来自同一来源,则 SOP(同源策略)会限制此操作。

如果两个页面的协议、端口和主机相同,则两个页面具有相同的来源。

有关更多详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

您可以使用标志启动 chrome --disable-web-security:在 CMD 中:

C:/<path to chrome app>/chrome.exe --disable-web-security

!!!仅出于发展原因!

于 2016-03-30T12:50:59.720 回答