Images 文件夹包含许多图像,如 xxx.png、yyy.png 等
Image src="./images/xxx.png" 在我测试时以及部署到 SCP 后效果非常好。但是,当我将应用程序注册到 Launchpad 并从那里打开它时,同样的方法不起作用。为什么图片无法加载?
我在网络中看到以下内容:
Component.js 正在从
加载https://xxxxxx-yyyyy.dispatcher.eu3.hana.ondemand.com/sap/fiori/workbox/Component.js?ts=1.0.143 具有 200 状态
但是图像正在尝试从中获取负载
https://xxxxxx-yyyyy.dispatcher.eu3.hana.ondemand.com/images/xxx.png
https://xxxxxx-yyyyy.dispatcher.eu3.hana.ondemand.com/images/yyy.png这会导致404。相反,我应该点击以下网址。
https://xxxxxx-yyyyy.dispatcher.eu3.hana.ondemand.com/images/sap/fiori/workbox/images/xxx.png
我尝试将图像 src 更改为 src="./images/xxx.png" 和 src="/images/yyy.png"。但是,相同的旧 URL 会被点击并导致 404。
为什么会出现这样的情况呢?为什么 component.js 和图像从不同的根加载?我发现很多答案建议使用 jQuery.sap.getModulePath("com.xxx.Component") 但这对我没有任何帮助。它返回给我https://sapui5.hana.ondemand.com/resources/com/xxx/Component,这是没有用的。
为了从本地项目文件夹结构中检索文件,您需要计算它们的正确路径。这与 FLP 环境相关,因为应用程序在加载时会分配动态路径。
sap.ui.require.toUrl
是一个神奇的功能,应该可以满足你的需要。
该函数需要一个路径作为输入参数,并将其转换为 FLP 内的工作路径。请参阅方法说明。
<!-- Given:
data-sap-ui-resource-roots='{ "your.namespace": "./" }'
'/imageUri' model value: "your/namespace/images/xyz.png"
-->
<Image src="{
path: '/imageUri',
formatter: 'sap.ui.require.toUrl'
}" />
sap.ui.require.toUrl
正在取代自 UI5 1.58 以来已弃用的 jQuery.sap.getModulePath
。