防止图像中 & 的 JSF 编码 url
Prevent JSF encoding of & as & in image url
我正在从我的数据库中获取图像 url,需要在 <img>
标签中显示它。我遇到的问题是 JSF 将 &
编码为 &
并且找不到图像 url。
这是一个例子。正确的图像 url:
https://<server details>?ahid=2096&aid=107687&lid=28812968&url=202.jpg
编码后的url:
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
将 &
替换回 &
但这也不起作用,因为在 javascript
中图像 url 很好,而在浏览器的视图源中却不是。这是代码。在浏览器中:
<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"
这是错误的,图像被破坏了。知道如何解决这个问题吗?
您在浏览器中看到的是正确的。在 html 中,&
应编码为 &
这在技术上被解释为 & 当您的浏览器请求图像时,您可以在评论中看到 post 为一个 http 200 响应。这里的问题在于,当图像 return 是 html 页面
时,您期望 https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg
到 return 图像
LotImageViewer.asp?ahid=4292&aid=108223&lid=29012930&url=127.jpg
www.proxibid.com/asp
GET 200 OK
text/html
searchresults:696 Parser 5.1 KB 34.7 KB 277 ms 228 m
如果您 post this url 在您的浏览器中(或只需单击此处),您可以看到它 return 的内容。所以基本上,错误是你的 'expectation'。如果单击图像中的 'full screen',您将看到
https://www.proxibid.com/AuctionImages/3231/108183/FullSize/144-1.jpg
全屏显示图像。所以你需要调整你的代码
我正在从我的数据库中获取图像 url,需要在 <img>
标签中显示它。我遇到的问题是 JSF 将 &
编码为 &
并且找不到图像 url。
这是一个例子。正确的图像 url:
https://<server details>?ahid=2096&aid=107687&lid=28812968&url=202.jpg
编码后的url:
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
将 &
替换回 &
但这也不起作用,因为在 javascript
中图像 url 很好,而在浏览器的视图源中却不是。这是代码。在浏览器中:
<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"
这是错误的,图像被破坏了。知道如何解决这个问题吗?
您在浏览器中看到的是正确的。在 html 中,&
应编码为 &
这在技术上被解释为 & 当您的浏览器请求图像时,您可以在评论中看到 post 为一个 http 200 响应。这里的问题在于,当图像 return 是 html 页面
https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg
到 return 图像
LotImageViewer.asp?ahid=4292&aid=108223&lid=29012930&url=127.jpg
www.proxibid.com/asp
GET 200 OK
text/html
searchresults:696 Parser 5.1 KB 34.7 KB 277 ms 228 m
如果您 post this url 在您的浏览器中(或只需单击此处),您可以看到它 return 的内容。所以基本上,错误是你的 'expectation'。如果单击图像中的 'full screen',您将看到
https://www.proxibid.com/AuctionImages/3231/108183/FullSize/144-1.jpg
全屏显示图像。所以你需要调整你的代码