我在 Eclipse 中创建了几个已部署到 SAP NetWeaver PO 7.5 应用服务器的 SAPUI5 Web 应用程序。
所有这些应用程序都使用“通用”项目的通用组件。我只是通过带有此引导脚本标签的 html 标头使它们可用:
<!-- Bootstrapping UI5 -->
<script id="sap-ui-bootstrap"
src="/sapui5/resources/sap-ui-cachebuster/sap-ui-core.js"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="path.to.custom.theme"
data-sap-ui-compatVersion="edge"
data-sap-ui-resourceroots='{"com.namespace.ui.specificapp": ".", "com.namespace.ui.common" :"/com.namespace~ui~common~web"}'
data-sap-ui-frameOptions="trusted"
data-sap-ui-appCacheBuster = "./,/com.namespace~ui~common~web/" >
</script>
在我分层将这些应用程序传输到 SAP Cloud 之前,这一直很好。
我将项目导入 WebIDE,我发现的第一件事是该data-sap-ui-resourceroots
属性不再起作用,因为应用程序无法从公共项目中找到组件。因此,我将通用应用程序部署到 SAP Cloud,并在 index.html 的引导脚本标记中插入了相应的 URL,如下所示:
<script id="sap-ui-bootstrap"
src="/sapui5/resources/sap-ui-cachebuster/sap-ui-core.js"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="path.to.custom.theme"
data-sap-ui-compatVersion="edge"
data-sap-ui-resourceroots='{"com.namespace.ui.specificapp": ".", "com.namespace.ui.common" :"/https://common-aXXXXXXXX.dispatcher.hana.ondemand.com/"}'
data-sap-ui-frameOptions="trusted"
data-sap-ui-appCacheBuster = "./,/com.namespace~ui~common~web/" >
这允许浏览器从公共项目中找到 JS 文件,但会导致此错误:
注意:您的浏览器不支持 JavaScript 或已关闭。按下按钮继续。
这是https://common-aXXXXXXXX.dispatcher.hana.ondemand.com/主机抛出的消息。
分析 HTTP 请求,我看到参数Accept:text/plain, */*; q=0.01
已设置。
我不知道为什么 SAPUI5 请求纯文本或我可以在哪里更改此行为。有谁知道如何将此应用程序结构转移到 SAP Cloud?