0

我正在 Web IDE Personal Edition 中编写一个简单的应用程序,该应用程序将部署在 On-Premise ABAP 系统上。

应用程序.view.xml

<mvc:View
  controllerName="databinding1.controller.App"
  xmlns="sap.m"
  xmlns:mvc="sap.ui.core.mvc"
  displayBlock="true"
>
  <Button text="Submit"/>
  <Input
    value=""
    placeholder="Full Name"
    width="50%"
  />
</mvc:View>
  • 应用程序名称:DataBinding1
  • 应用程序存储在“工作区”文件夹中。

索引.html

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta charset="utf-8">
    <title>Data Binding1</title>
    <script id="sap-ui-bootstrap"
      src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
      data-sap-ui-theme="sap_bluecrystal"
      data-sap-ui-libs="sap.m"
      data-sap-ui-bindingSyntax="complex"
      data-sap-ui-compatVersion="edge"
      data-sap-ui-preload="async"
      data-sap-ui-resourceroots='{
        "databinding1": "./"
      }'
    ></script>
    <script>
      sap.ui.getCore().attachInit(function () {
        new sap.ui.core.ComponentContainer({
          "name":"databinding1"
        }).placeAt("content");
      });
    </script>
  </head>
  <body class="sapUiBody" id="content"></body>
</html>

控制台中的错误消息: 在此处输入图像描述

如果我controllerName从 App.view.xml 中删除,则视图加载成功。

4

2 回答 2

2

您尝试使用 sapui5 页面提供的 sdk,这是对不在同一系统内的另一台服务器的请求。错误是浏览器防止跨站点脚本的典型行为。您可以使用 sap 资源的 sapui5 代理资源 servlet 解决您的问题(也适用于 odata,但这是另一个 servlet => 简单代理 servlet)。

您应该设置一个资源 servlet。在您的应用程序中,您必须区分是否应该使用代理,请查看链接:

https://sapui5.hana.ondemand.com/#docs/guide/2d3f5fb63a2f4090942375df80abc39f.html

存储在 sap 中的 sapui5 sdk 的远程路径:

http://<yourdomain>/sap/public/bc/ui5_ui5/resources/sap-ui-core.js

确保在 TA 中激活存储库:SICF default_host>public>bc>ui5_ui5右键单击​​并按激活

于 2016-10-18T07:05:45.527 回答
0

对于那些真正想要在开发时处理跨域资源的人:Web IDE 提供了一种代理机制,我们可以通过添加目标文件来利用它:



对于问题作者:

[...] 无法加载https://sapui5.hana.ondemand.com/resources/sap.ui.core.mvc.Controller

该错误消息显示浏览器尝试加载名为sap.ui.core.mvc.Controller.js的文件,该文件不存在 (404)。主要原因是这里不是同源政策

在该App.controller.js文件中,您必须使用无效语法定义了依赖项。在 API等待模块路径数组(而不是模块名称.)时,在两者之间使用斜杠 ( )代替点 ( )。/sap.ui.define

sap.ui.define([
  "sap/ui/core/mvc/Controller" // instead of "sap.ui.core.mvc.Controller"
], function(Controller) {
  ...
});
于 2018-02-28T01:24:05.590 回答