Как получить URL-адрес элемента ‹ice:graphicImage›?

Я пытаюсь сделать галерею миниатюр на своей веб-странице, чтобы при нажатии на нее отображалось полноразмерное изображение. Изображения хранятся в фоновом компоненте и отображаются с тегом.

<li>
       <a href="????">
           <ice:graphicImage value="#{screenshot.image}" styleClass="thumb"/>
       </a>
</li>

На странице я вижу, что изображения имеют адреса типа /block/resource/MjY0OTc3Mzc1/, так как они обслуживаются блокирующим сервлетом Icefaces.

Что мне нужно знать, так это как получить ссылку на изображение, чтобы я мог поместить его в элемент.

Спасибо за любую помощь!


person Johnnie    schedule 04.08.2010    source источник


Ответы (2)


В этой конкретной ситуации вам, вероятно, лучше всего подойдет JavaScript. Когда страница завершит загрузку, захватите все элементы <img> с именем класса thumb, извлеките атрибут src, найдите родительский элемент <a> и соответствующим образом обновите его атрибут href.

Но я бы не стал этого делать. Во-первых, это плохо для пользовательского опыта. Во-вторых, это не будет работать на клиентах с отключенным JS. В-третьих, хранение необработанных изображений в bean-компоненте занимает много памяти. Лучше хранить изображения в файловой системе локального диска и ссылаться на них напрямую или, если они находятся вне общедоступного веб-контента или в базе данных, с помощью сервлета. Затем в вашем управляемом компоненте просто есть набор URL-адресов для изображений (или сервлета) и пусть сервлет передает их последовательно соответственно. Вы можете найти здесь основной пример такого сервлет и здесь более продвинутый, поддерживающий кэширование и возобновить.

person BalusC    schedule 04.08.2010
comment
Большое спасибо за ваш ответ BalusC. После поиска решений в Интернете я остановился на первом варианте, так как он намного проще, а с помощью jQuery его действительно легко реализовать. Кроме того, поскольку изображения хранятся в bean-компоненте с областью запроса, и их всего 4 (изображения), я думаю, что потребление памяти не будет большой проблемой. - person Johnnie; 05.08.2010

Вот что я сделал, чтобы решить проблему. У меня был этот неупорядоченный список для моей галереи:

<ui:repeat value="#{solutionBean.solution.screenshots}" var="screenshot">
                    <li>
                        <a href="gal" rel="prettyPhoto[gallery]" title="#{screenshot.description}">
                        <ice:graphicImage value="#{screenshot.image}" alt="#{screenshot.alternative}"
                                              height="135" width="130"/>
                        </a>
                    </li></ui:repeat>

И я добавил этот скрипт, чтобы заменить элемент href в гиперссылке на элемент src с изображения:

 jQuery(document).ready(function() {
            jQuery("a[href^='gal']").each(function() {
                this.href = jQuery('img', this).attr("src");
            });
        });
person Johnnie    schedule 05.08.2010