2016-03-01 9 views
1

Я получаю URL-адрес изображения из моей базы данных и должен отображать его в теге <img>. Проблема в том, что JSF кодирует & как &amp;, а URL-адрес изображения не найден.Предотвращение JSF-кодирования & as & в картинке url

Вот пример. Правильный URL изображения:

https://<server details>?ahid=2096&aid=107687&lid=28812968&url=202.jpg 

закодированы URL:

https://<server details>?ahid=2096&amp;aid=107687&amp;lid=28812968&amp;url=202.jpg 

В этом случае кодированный URL изображения не найден и отображает значок сломанные изображения. Как я могу это решить?

EDIT: html элементы с их JSF теги:

<a href='#{product.itemUrl}' target="_blank"> 
    <img src='#{searchResults.getThumbnailUrl(product)}' class="img-responsive imageproduct" /> 
</a> 

EDIT 2:

Я думал, что я хотел бы попробовать заменить &amp; назад & с javascript, но это не работает, либо потому, что в javascript графический url - это хорошо, в то время как в исходном браузере это не так. Вот код. В браузере:

<img id="thumbnailId" onmouseover="decodeUrl(this)" src="https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&amp;aid=108183&amp;lid=28955872&amp;url=144-1.jpg" /> 

JavaScript:

function decodeUrl(img) { 
    var url = img.src; 
    console.log("url before = " + url); 
    url = replaceAll(url, "&amp;", "&"); 
    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&amp;aid=108183&amp;lid=28955872&amp;url=144-1.jpg" 

, который является неправильным, и изображение не работает. Любая идея, как это исправить?

+1

Какие серверные технологии вы используете (php, .NET и т. Д.)? –

+0

В HTML-коде '&' должен быть закодирован как '&', так что если вы посмотрите на HTML код ваш URL изображения должен выглядеть следующим образом '' браузер автоматически преобразует этот url в 'https: // <информация о сервере>? ahid = 2096 & aid = 107687 & lid = 28812968 & url = 202.jpg' при запросе изображения.Я думаю, у вас есть какая-то двойная кодировка, и что ваш источник фактически содержит '& усилителя;': '

+0

[link1] (http://mrcoles.com/blog/how-use-amersands-html-encode/) , [link2] (http://stackoverflow.com/questions/2949173/how-can-i- stop-the-browser-from-url-encoding-form-values-on-get) –

ответ

2

Что вы видите в своем браузере правильно. В html & должен быть закодирован как &amp; Это технически интерпретируется как &, когда ваш браузер запрашивает изображение, так как вы можете видеть, что вы публикуете в комментарии, как ответ http 200. Что плохого в том, что вы ожидаете https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&amp;aid=108183&amp;lid=28955872&amp;url=144-1.jpg вернуть изображение, когда он возвращает HTML-страницу

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 

Если вы разместите this url в вашем браузере (или просто нажмите здесь), вы можете увидеть, что она возвращает. Так что в основном ошибка - это ваше «ожидание». Если вы нажмете «полный экран» на картинке, вы увидите

https://www.proxibid.com/AuctionImages/3231/108183/FullSize/144-1.jpg 

Что показывает изображение на весь экран. Итак, вам нужно адаптировать свой код

+0

Если вы публикуете https://www.proxibid.com/asp/LotImageViewer.asp?hid=3231 & aid = 108183 & lid = 28955872 & url = 144-1 .jpg в вашем браузере возвращается ошибка. Но когда вы вручную заменяете & просто и это дает вам изображение. Но это именно тот URL, который я отправляю: https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg. И он не возвращается, показывая ссылку с & в браузере. Поэтому ваш ответ не очень полезен. – Eddy

+0

Вздох ... Ваш КОММЕНТАРИЙ разместил 200, поэтому ваш браузер UNESCAPED '& amp'' и 'и работал, и он работал ... Попробуйте создать smal plain jsf-страницу и поместите там' ' ... Ошибки? Скорее всего, да, когда даже пытаюсь ЗАГРУЗИТЬ страницу ... попробуйте поставить '' там ... Ошибки? Скорее всего, около 404 в браузере dev tool network tab для загрузки '& bla.jpg" См. Браузер UNESCAPING & ??? Ваша проблема заключается в том, что URL-адрес НЕ возвращает то, что вы ожидаете ... – Kukeltje

+0

См. Http://stackoverflow.com/questions/6883860/how-to-insert-special-characters-like-and-into-jsf-components-value-attribu и http://stackoverflow.com/questions/3705591/do-i-encode -ampersands-in-a-href ПОЖАЛУЙСТА, изучите основы и проверьте, отлаживайте и т. д. – Kukeltje

 Смежные вопросы

  • Нет связанных вопросов^_^