2010-08-04 38 views
0

我正在尝试在我的网页上做一个缩略图库,以便在单击一个缩略图时显示全尺寸图像。图像存储在后台bean中并显示一个标签。如何获取<ice:graphicImage>元素的网址?

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

当该页中,我看到的图像有像/块/资源地址/ MjY0OTc3Mzc1 /因为它们是由ICEfaces的阻止servlet的服务。

我需要知道的是如何获得图像的链接,以便我可以将其放入元素中。

感谢您的帮助!

回答

0

在这种特殊情况下,您最好的选择可能是JavaScript。当页面加载完成后,抓取所有<img>元素的类名称thumb,提取src属性,找到父项<a>并相应地更新其属性href

但我不会那样做。一,对用户体验不利。二,它不会在JS禁用的客户端上工作。三,在bean中存储原始图像是内存占用。而是将图像存储在本地磁盘文件系统中,并直接链接到它们,或者在公共webcontent之外或数据库之外使用servlet进行链接。然后,在托管bean中,只有图像(或servlet)的URL集合,并让servlet顺序地对它们进行流式处理。您可以找到here a 基本这样一个servlet的例子和here支持缓存和简历的更高级的例子。

+0

非常感谢您对您的回复BalusC。 在网络搜索解决方案后,我最终选择了第一个选项,因为它比jQuery更简单,实现起来非常简单。此外,由于图像存储在请求范围的bean中,并且只有4个(图像),我认为内存消耗不会成为问题。 – Johnnie 2010-08-05 07:42:11

0

以下是我所做的解决问题的方法。 我有这个无序列表,我的画廊:

<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 elemnt在从图像src元素的超级链接:

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