有没有一种方法,使在Primefaces一个graphicImage的执行“值”方法仅在需要?

问题描述 投票:2回答:2

我想说明几个缩略图自定义画廊。当这些中的一个点击,一个overlaypanel所示,含有较高质量与图像一graphicImage的。由于高品质的图像是aroung每个5MB,我只是想加载它们的需求。

我已经尝试过使用“绘制的”属性,但似乎并没有要么做的伎俩。我也尝试了“点击”用一个JavaScript函数,但也没有取得预期的结果。

<p:graphicImage value="#{dataHolderBean.imageHolderBean.loadFullSizeImage()}"
class="centeredImageOverlay" cache="false">
<f:param name="currentImageId" value="#{images.imageId}" />
</p:graphicImage>

我想只是调用值=“#{dataHolderBean.imageHolderBean.loadFullSizeImage()}”这个方法,对其它图像,当点击。

jsf primefaces graphicimage
2个回答
3
投票

你为什么不找加载覆盖面板懒惰的内容的解决方案?这对我听起来像一个更通用的解决方案(东西里面会被加载懒惰那么)你的立场,并已在执行之中的东西的机会较高。

p:overlayPanel(重点煤矿)的PrimeFaces展示

覆盖面板

OverlayPanel是可以网页上叠加其他组件的通用容器组件。显着的特点是定制的定位,可配置的事件和影响。懒加载内容,以减少网页加载时间也通过动态选项,启用时overlayPanel只会被显示之前加载内容的支持。

从PrimeFaces文档

动态模式

动态模式使内容的延迟加载,在面板的这个模式的内容不呈现在页面加载和显示面板之前刚装入。同时内容缓存,以便连续显示器不要再加载内容。此功能是为了减少页面大小,减少网页加载时间有用。

因此,延迟加载是通过其在dynamic甚至有一个例子showcase属性来完成

<p:commandButton id="movieBtn" value="Dynamic" type="button" />
<p:overlayPanel id="moviePanel" for="movieBtn" hideEffect="fade" dynamic="true" style="width:600px" modal="true">
    ...
</p:overlayPanel>

2
投票

您可以使用内置的LazyDefaultStreamedContent在bean,懒初始化流:

streamedContent = new LazyDefaultStreamedContent("application/vnd.ms-excel", "myExcel") {
    @Override
    protected InputStream initStream()
    {
          return new FileInputStream(...);
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.