我在组件内显示静态图像资产,直到运行时我才知道该图像应该是什么,所以我需要动态生成 URL。这些图像都生活在webapp/images/
我发现的文档对如何处理这个用例不是很清楚,但是在玩了之后我发现我可以在组件模板中动态构建 URL,如下所示:
<img src="${context:img/score/overall}/${imageFilename}" />
然后将显示哪张图片的逻辑放在组件类文件中:
public String getImageFilename() {
// decide which image to display and return the filename
}
所以这可行,但它不是最干净的解决方案。我真的不想将 URL 基连接到模板内的文件名 - 我更愿意在组件类中构造整个 URL,如下所示:
<img src="${imageUrl}" />
和
public String getImageURL() {
// build URL somehow like "context:" + "filePath" in template
}
所以我的问题是:context: ...
模板中是否有等效的 Java 代码,它只是为我可以将文件路径附加到的 web appl 上下文文件夹生成字符串基本 URL?
通过阅读文档,我可以看到一些明显的 hacky 方法,例如使用所描述的方案手动构建基本 URL,或者Asset
从 Web 应用程序上下文文件夹中注入已知的静态图像并调用toClientURL()
以提取基本 URL。但似乎在 Java 中必须有一个很好的内置方法来做到这一点,特别是因为它可以免费用于模板扩展。
但是我可能会谷歌,我似乎无法在任何地方找到如何做到这一点!