我想说明几个缩略图自定义画廊。当这些中的一个点击,一个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()}”这个方法,对其它图像,当点击。
你为什么不找加载覆盖面板懒惰的内容的解决方案?这对我听起来像一个更通用的解决方案(东西里面会被加载懒惰那么)你的立场,并已在执行之中的东西的机会较高。
从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>
您可以使用内置的LazyDefaultStreamedContent在bean,懒初始化流:
streamedContent = new LazyDefaultStreamedContent("application/vnd.ms-excel", "myExcel") {
@Override
protected InputStream initStream()
{
return new FileInputStream(...);
}
};