【发布时间】:2016-03-01 12:01:52
【问题描述】:
我正在从我的数据库中获取一个图像 url,并且需要将它显示在一个 <img> 标记中。我遇到的问题是 JSF 将 &amp;amp; 编码为 &amp;amp; 并且找不到图像 url。
这是一个例子。正确的图片网址:
https://<server details>?ahid=2096&aid=107687&lid=28812968&url=202.jpg
编码后的网址:
https://<server details>?ahid=2096&aid=107687&lid=28812968&url=202.jpg
在这种情况下,找不到编码的图像 url,并显示损坏的图像图标。我该如何解决?
编辑:html 元素及其JSF 标签:
<a href='#{product.itemUrl}' target="_blank">
<img src='#{searchResults.getThumbnailUrl(product)}' class="img-responsive imageproduct" />
</a>
编辑2:
我想我会尝试用javascript 将&amp;amp; 替换回&amp;amp; 但这也不起作用,因为在javascript 中,图像网址很好,而在浏览器的视图源中却不是.这是代码。在浏览器中:
<img id="thumbnailId" onmouseover="decodeUrl(this)" src="https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg" />
javascript:
function decodeUrl(img) {
var url = img.src;
console.log("url before = " + url);
url = replaceAll(url, "&", "&");
console.log("url after = " + url);
}
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
}
输出是
url before = https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg
url after = https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg
如您所见,两者是相同且正确的。但是查看源代码会导致
src="https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg"
这是不正确的,并且图像已损坏。知道如何解决这个问题吗?
【问题讨论】:
-
您使用的是什么服务器端技术(php、.NET 等...)?
-
在 html 代码中,
&amp;amp;必须编码为&amp;amp;,因此如果您查看 html 代码,您的图像 url 必须看起来像这样<img src="https://<server details>?ahid=2096&amp;aid=107687&amp;lid=28812968&amp;url=202.jpg" >,浏览器会自动转换请求图像时该 URL 到https://<server details>?ahid=2096&aid=107687&lid=28812968&url=202.jpg。我猜你有一些双重编码,你的源实际上包含&amp;amp;:<img src="https://<server details>?ahid=2096&amp;amp;aid=107687&amp;amp;lid=28812968&amp;amp;url=202.jpg" > -
@RichardEverett 这是 JSF2 和 tomcat。
-
这确实是不正确的。您究竟是如何创建
<img>元素的?
标签: javascript jsf url-encoding graphicimage