2010-08-04 46 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"); 
      }); 
     });