【问题标题】:How do i get the URL of an <ice:graphicImage> element?如何获取 <ice:graphicImage> 元素的 URL?
【发布时间】:2011-03-25 03:18:55
【问题描述】:

我正在尝试在我的网页上创建一个缩略图库,以便在单击时显示完整大小的图像。图像存储在支持 bean 中,并带有标签。

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

在页面上时,我看到图像的地址类似于 /block/resource/MjY0OTc3Mzc1/,因为它们由 Icefaces 阻塞 servlet 提供服务。

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

感谢您的帮助!

【问题讨论】:

    标签: jsf image servlets icefaces javabeans


    【解决方案1】:

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

    但我不会那样做。一,不利于用户体验。第二,它不适用于 JS 禁用的客户端。第三,将原始图像存储在 bean 中会占用内存。而是将图像存储在本地磁盘文件系统上并直接链接到它们,或者在公共网络内容之外或在数据库中时,使用 servlet。然后在您的托管 bean 中,只需收集图像(或 servlet)的 URL,并让 servlet 相应地按顺序流式传输它们。您可以找到 here 一个此类 servlet 的基本示例,以及 here 一个更高级的支持缓存和恢复的示例。

    【讨论】:

    • 非常感谢 BalusC 的回复。在网上搜索解决方案后,我最终选择了第一个选项,因为它更简单,并且使用 jQuery 非常容易实现。此外,由于图像存储在请求范围的 bean 中,并且只有 4 个(图像),我认为内存消耗不会有太大问题。
    【解决方案2】:

    这是我为解决问题所做的。 我的画廊有这个无序列表:

    <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>
    

    我添加了这个脚本,用图像中的 src 元素替换超链接中的 href 元素:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 2013-06-13
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多