我正在尝试在sapui5 app中使用Gateway OData Services。
元数据 - /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]
。
详细错误 - [![enter image description here][3]][3]
请帮忙,我的代码怎么了?
答案 0 :(得分:0)
您的OData服务需要位于同一台服务器上,或者需要来自与UI5应用程序相同的服务器。如果它不在同一台服务器上,您应该让Gateway生成CORS头。
请在此处找到有关CORS以及如何让Gateway生成这些标题的更多信息:http://scn.sap.com/community/gateway/blog/2014/09/23/solve-cors-with-gateway-and-chrome
答案 1 :(得分:0)
错误不是很清楚,在这种情况下,chrome可能会显示更详细的错误。
如果您的应用程序服务器和odata服务不是来自同一个来源,则SOP(相同的原始策略)会限制此操作。
如果两个页面的协议,端口和主机相同,则两个页面具有相同的来源。
有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy。
你可以使用--disable-web-security
标志启动chrome:
在CMD:
C:/<path to chrome app>/chrome.exe --disable-web-security
<强> !!!仅用于发展原因!!!