我在一个组件中显示一个静态图像资源,直到运行时我才知道该图像应该是什么,所以我需要动态生成URL。这些图像都保存在webapp/images/中
The documentation I found不太清楚如何处理这个用例,但在尝试之后,我发现我可以在组件模板中动态构造URL,如下所示:
<img src="${context:img/score/overall}/${imageFilename}" />然后将要显示的图像的逻辑放在组件类文件中:
public String getImageFilename() {
// decide which image to display and return the filename
}所以这是可行的,但它不是最干净的解决方案。我真的不想将URL基址连接到模板内的文件名-我更愿意在component类中构造整个URL,如下所示:
<img src="${imageUrl}" />和
public String getImageURL() {
// build URL somehow like "context:" + "filePath" in template
}所以我的问题是:在模板中是否有context: ...的Java代码等价物,它只是为web上下文文件夹生成一个字符串基URL,我可以将我的文件路径附加到该文件夹?
通过阅读文档,我可以看到一些明显的老生常谈的方法,比如使用所描述的方案手动构建基本网址,或者从web应用程序上下文文件夹中注入一个已知的静态图像作为Asset,然后调用toClientURL()来提取基本网址。但在Java中似乎必须有一种很好的内置方法来实现这一点,特别是因为它可以在模板扩展中自由使用。
但是,尽管我可能在谷歌,我似乎找不到如何在任何地方做到这一点!
发布于 2013-01-14 08:50:31
我想这对你应该有好处。(免责声明:我没有测试过)
@Inject
private AssetSource assetSource;
@Inject
private Locale locale;
public String getImageURL() {
URL assetUrl = assetSource.getContextAsset("img/score/overall/" + getImageFilename(), locale).toURL();
return assetUrl.toString();
}编辑:更新以反映霍华德的评论
https://stackoverflow.com/questions/14307134
复制相似问题